commit 56b48fcda5076d4070ab00df32ff5ff834e0be86
Author: Zefan Li <lizefan@huawei.com>
Date:   Tue Apr 14 17:34:05 2015 +0800

    Linux 3.4.107

commit d4e393820d2ed20fc6a4088f3eda44458764d997
Author: Myron Stowe <myron.stowe@redhat.com>
Date:   Tue Feb 3 16:01:24 2015 -0700

    PCI: Handle read-only BARs on AMD CS553x devices
    
    commit 06cf35f903aa6da0cc8d9f81e9bcd1f7e1b534bb upstream.
    
    Some AMD CS553x devices have read-only BARs because of a firmware or
    hardware defect.  There's a workaround in quirk_cs5536_vsa(), but it no
    longer works after 36e8164882ca ("PCI: Restore detection of read-only
    BARs").  Prior to 36e8164882ca, we filled in res->start; afterwards we
    leave it zeroed out.  The quirk only updated the size, so the driver tried
    to use a region starting at zero, which didn't work.
    
    Expand quirk_cs5536_vsa() to read the base addresses from the BARs and
    hard-code the sizes.
    
    On Nix's system BAR 2's read-only value is 0x6200.  Prior to 36e8164882ca,
    we interpret that as a 512-byte BAR based on the lowest-order bit set.  Per
    datasheet sec 5.6.1, that BAR (MFGPT) requires only 64 bytes; use that to
    avoid clearing any address bits if a platform uses only 64-byte alignment.
    
    [bhelgaas: changelog, reduce BAR 2 size to 64]
    Fixes: 36e8164882ca ("PCI: Restore detection of read-only BARs")
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=85991#c4
    Link: http://support.amd.com/TechDocs/31506_cs5535_databook.pdf
    Link: http://support.amd.com/TechDocs/33238G_cs5536_db.pdf
    Reported-and-tested-by: Nix <nix@esperi.org.uk>
    Signed-off-by: Myron Stowe <myron.stowe@redhat.com>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit be27fda763a3c90095bf9cd0f2013814aaedaccb
Author: karl beldan <karl.beldan@gmail.com>
Date:   Thu Jan 29 11:10:22 2015 +0100

    lib/checksum.c: fix build for generic csum_tcpudp_nofold
    
    commit 9ce357795ef208faa0d59894d9d119a7434e37f3 upstream.
    
    Fixed commit added from64to32 under _#ifndef do_csum_ but used it
    under _#ifndef csum_tcpudp_nofold_, breaking some builds (Fengguang's
    robot reported TILEGX's). Move from64to32 under the latter.
    
    Fixes: 150ae0e94634 ("lib/checksum.c: fix carry in csum_tcpudp_nofold")
    Reported-by: kbuild test robot <fengguang.wu@intel.com>
    Signed-off-by: Karl Beldan <karl.beldan@rivierawaves.com>
    Cc: Eric Dumazet <edumazet@google.com>
    Cc: David S. Miller <davem@davemloft.net>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 972dafe08e0434c3ce1caf5c86d7dae222d85588
Author: Leon Yu <chianglungyu@gmail.com>
Date:   Wed Mar 25 15:55:11 2015 -0700

    mm: fix anon_vma->degree underflow in anon_vma endless growing prevention
    
    commit 3fe89b3e2a7bbf3e97657104b9b33a9d81b950b3 upstream.
    
    I have constantly stumbled upon "kernel BUG at mm/rmap.c:399!" after
    upgrading to 3.19 and had no luck with 4.0-rc1 neither.
    
    So, after looking into new logic introduced by commit 7a3ef208e662 ("mm:
    prevent endless growth of anon_vma hierarchy"), I found chances are that
    unlink_anon_vmas() is called without incrementing dst->anon_vma->degree
    in anon_vma_clone() due to allocation failure.  If dst->anon_vma is not
    NULL in error path, its degree will be incorrectly decremented in
    unlink_anon_vmas() and eventually underflow when exiting as a result of
    another call to unlink_anon_vmas().  That's how "kernel BUG at
    mm/rmap.c:399!" is triggered for me.
    
    This patch fixes the underflow by dropping dst->anon_vma when allocation
    fails.  It's safe to do so regardless of original value of dst->anon_vma
    because dst->anon_vma doesn't have valid meaning if anon_vma_clone()
    fails.  Besides, callers don't care dst->anon_vma in such case neither.
    
    Also suggested by Michal Hocko, we can clean up vma_adjust() a bit as
    anon_vma_clone() now does the work.
    
    [akpm@linux-foundation.org: tweak comment]
    Fixes: 7a3ef208e662 ("mm: prevent endless growth of anon_vma hierarchy")
    Signed-off-by: Leon Yu <chianglungyu@gmail.com>
    Signed-off-by: Konstantin Khlebnikov <koct9i@gmail.com>
    Reviewed-by: Michal Hocko <mhocko@suse.cz>
    Acked-by: Rik van Riel <riel@redhat.com>
    Acked-by: David Rientjes <rientjes@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 14b98571ea157c84211ffb38daee979b738856f1
Author: Catalin Marinas <catalin.marinas@arm.com>
Date:   Fri Mar 20 16:48:13 2015 +0000

    net: compat: Update get_compat_msghdr() to match copy_msghdr_from_user() behaviour
    
    commit 91edd096e224941131f896b86838b1e59553696a upstream.
    
    Commit db31c55a6fb2 (net: clamp ->msg_namelen instead of returning an
    error) introduced the clamping of msg_namelen when the unsigned value
    was larger than sizeof(struct sockaddr_storage). This caused a
    msg_namelen of -1 to be valid. The native code was subsequently fixed by
    commit dbb490b96584 (net: socket: error on a negative msg_namelen).
    
    In addition, the native code sets msg_namelen to 0 when msg_name is
    NULL. This was done in commit (6a2a2b3ae075 net:socket: set msg_namelen
    to 0 if msg_name is passed as NULL in msghdr struct from userland) and
    subsequently updated by 08adb7dabd48 (fold verify_iovec() into
    copy_msghdr_from_user()).
    
    This patch brings the get_compat_msghdr() in line with
    copy_msghdr_from_user().
    
    Fixes: db31c55a6fb2 (net: clamp ->msg_namelen instead of returning an error)
    Cc: David S. Miller <davem@davemloft.net>
    Cc: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [lizf: Backported to 3.4: s/uaddr/tmp1/]
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit a4cb7e348f461ce380708623f82f3020e6b89e5b
Author: Ryusuke Konishi <konishi.ryusuke@lab.ntt.co.jp>
Date:   Thu Mar 12 16:26:00 2015 -0700

    nilfs2: fix deadlock of segment constructor during recovery
    
    commit 283ee1482f349d6c0c09dfb725db5880afc56813 upstream.
    
    According to a report from Yuxuan Shui, nilfs2 in kernel 3.19 got stuck
    during recovery at mount time.  The code path that caused the deadlock was
    as follows:
    
      nilfs_fill_super()
        load_nilfs()
          nilfs_salvage_orphan_logs()
            * Do roll-forwarding, attach segment constructor for recovery,
              and kick it.
    
            nilfs_segctor_thread()
              nilfs_segctor_thread_construct()
               * A lock is held with nilfs_transaction_lock()
                 nilfs_segctor_do_construct()
                   nilfs_segctor_drop_written_files()
                     iput()
                       iput_final()
                         write_inode_now()
                           writeback_single_inode()
                             __writeback_single_inode()
                               do_writepages()
                                 nilfs_writepage()
                                   nilfs_construct_dsync_segment()
                                     nilfs_transaction_lock() --> deadlock
    
    This can happen if commit 7ef3ff2fea8b ("nilfs2: fix deadlock of segment
    constructor over I_SYNC flag") is applied and roll-forward recovery was
    performed at mount time.  The roll-forward recovery can happen if datasync
    write is done and the file system crashes immediately after that.  For
    instance, we can reproduce the issue with the following steps:
    
     < nilfs2 is mounted on /nilfs (device: /dev/sdb1) >
     # dd if=/dev/zero of=/nilfs/test bs=4k count=1 && sync
     # dd if=/dev/zero of=/nilfs/test conv=notrunc oflag=dsync bs=4k
     count=1 && reboot -nfh
     < the system will immediately reboot >
     # mount -t nilfs2 /dev/sdb1 /nilfs
    
    The deadlock occurs because iput() can run segment constructor through
    writeback_single_inode() if MS_ACTIVE flag is not set on sb->s_flags.  The
    above commit changed segment constructor so that it calls iput()
    asynchronously for inodes with i_nlink == 0, but that change was
    imperfect.
    
    This fixes the another deadlock by deferring iput() in segment constructor
    even for the case that mount is not finished, that is, for the case that
    MS_ACTIVE flag is not set.
    
    Signed-off-by: Ryusuke Konishi <konishi.ryusuke@lab.ntt.co.jp>
    Reported-by: Yuxuan Shui <yshuiv7@gmail.com>
    Tested-by: Ryusuke Konishi <konishi.ryusuke@lab.ntt.co.jp>
    Cc: Al Viro <viro@zeniv.linux.org.uk>
    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 8b19cfea81e37f215399a3d5481f899ba24f30c5
Author: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Date:   Wed Feb 25 11:39:36 2015 +0200

    spi: dw: revisit FIFO size detection again
    
    commit 9d239d353c319f9ff884c287ce47feb7cdf60ddc upstream.
    
    The commit d297933cc7fc (spi: dw: Fix detecting FIFO depth) tries to fix the
    logic of the FIFO detection based on the description on the comments. However,
    there is a slight difference between numbers in TX Level and TX FIFO size.
    
    So, by specification the FIFO size would be in a range 2-256 bytes. From TX
    Level prospective it means we can set threshold in the range 0-(FIFO size - 1)
    bytes. Hence there are currently two issues:
      a) FIFO size 2 bytes is actually skipped since TX Level is 1 bit and could be
         either 0 or 1 byte;
      b) FIFO size is incorrectly decreased by 1 which already done by meaning of
         TX Level register.
    
    This patch fixes it eventually right.
    
    Fixes: d297933cc7fc (spi: dw: Fix detecting FIFO depth)
    Reviewed-by: Axel Lin <axel.lin@ingics.com>
    Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit f8cce9e338db5d455e62a4b9abbbeda3d5a0e203
Author: John Stultz <john.stultz@linaro.org>
Date:   Mon Feb 9 23:30:36 2015 -0800

    ntp: Fixup adjtimex freq validation on 32-bit systems
    
    commit 29183a70b0b828500816bd794b3fe192fce89f73 upstream.
    
    Additional validation of adjtimex freq values to avoid
    potential multiplication overflows were added in commit
    5e5aeb4367b (time: adjtimex: Validate the ADJ_FREQUENCY values)
    
    Unfortunately the patch used LONG_MAX/MIN instead of
    LLONG_MAX/MIN, which was fine on 64-bit systems, but being
    much smaller on 32-bit systems caused false positives
    resulting in most direct frequency adjustments to fail w/
    EINVAL.
    
    ntpd only does direct frequency adjustments at startup, so
    the issue was not as easily observed there, but other time
    sync applications like ptpd and chrony were more effected by
    the bug.
    
    See bugs:
    
      https://bugzilla.kernel.org/show_bug.cgi?id=92481
      https://bugzilla.redhat.com/show_bug.cgi?id=1188074
    
    This patch changes the checks to use LLONG_MAX for
    clarity, and additionally the checks are disabled
    on 32-bit systems since LLONG_MAX/PPM_SCALE is always
    larger then the 32-bit long freq value, so multiplication
    overflows aren't possible there.
    
    Reported-by: Josh Boyer <jwboyer@fedoraproject.org>
    Reported-by: George Joseph <george.joseph@fairview5.com>
    Tested-by: George Joseph <george.joseph@fairview5.com>
    Signed-off-by: John Stultz <john.stultz@linaro.org>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Sasha Levin <sasha.levin@oracle.com>
    Link: http://lkml.kernel.org/r/1423553436-29747-1-git-send-email-john.stultz@linaro.org
    [ Prettified the changelog and the comments a bit. ]
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 9493ef4e311954d800e494196dccc423e5f1cfa5
Author: Martin Schwidefsky <schwidefsky@de.ibm.com>
Date:   Wed Aug 13 12:01:30 2014 +0200

    s390/3215: fix tty output containing tabs
    
    commit e512d56c799517f33b301d81e9a5e0ebf30c2d1e upstream.
    
    git commit 37f81fa1f63ad38e16125526bb2769ae0ea8d332
    "n_tty: do O_ONLCR translation as a single write"
    surfaced a bug in the 3215 device driver. In combination this
    broke tab expansion for tty ouput.
    
    The cause is an asymmetry in the behaviour of tty3215_ops->write
    vs tty3215_ops->put_char. The put_char function scans for '\t'
    but the write function does not.
    
    As the driver has logic for the '\t' expansion remove XTABS
    from c_oflag of the initial termios as well.
    
    Reported-by: Stephen Powell <zlinuxman@wowway.com>
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Cc: Ben Hutchings <ben@decadent.org.uk>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 56a59c3ea2fc70fc8288ca4407277bf53044cd82
Author: Borislav Petkov <bp@suse.de>
Date:   Wed Jan 15 00:07:11 2014 +0100

    x86, cpu, amd: Add workaround for family 16h, erratum 793
    
    commit 3b56496865f9f7d9bcb2f93b44c63f274f08e3b6 upstream.
    
    This adds the workaround for erratum 793 as a precaution in case not
    every BIOS implements it.  This addresses CVE-2013-6885.
    
    Erratum text:
    
    [Revision Guide for AMD Family 16h Models 00h-0Fh Processors,
    document 51810 Rev. 3.04 November 2013]
    
    793 Specific Combination of Writes to Write Combined Memory Types and
    Locked Instructions May Cause Core Hang
    
    Description
    
    Under a highly specific and detailed set of internal timing
    conditions, a locked instruction may trigger a timing sequence whereby
    the write to a write combined memory type is not flushed, causing the
    locked instruction to stall indefinitely.
    
    Potential Effect on System
    
    Processor core hang.
    
    Suggested Workaround
    
    BIOS should set MSR
    C001_1020[15] = 1b.
    
    Fix Planned
    
    No fix planned
    
    [ hpa: updated description, fixed typo in MSR name ]
    
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Link: http://lkml.kernel.org/r/20140114230711.GS29865@pd.tnic
    Tested-by: Aravind Gopalakrishnan <aravind.gopalakrishnan@amd.com>
    Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
    [bwh: Backported to 3.2:
     - Adjust filename
     - Venkatesh Srinivas pointed out we should use {rd,wr}msrl_safe() to
       avoid crashing on KVM.  This was fixed upstream by commit 8f86a7373a1c
       ("x86, AMD: Convert to the new bit access MSR accessors") but that's too
       much trouble to backport.  Here we must use {rd,wr}msrl_amd_safe().]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
    Cc: Moritz Muehlenhoff <jmm@debian.org>
    Cc: Venkatesh Srinivas <venkateshs@google.com>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 917a35f64e9279b03988d88ef1acfd19f6d6f7b3
Author: Jerry Hoemann <jerry.hoemann@hp.com>
Date:   Wed Oct 29 14:50:22 2014 -0700

    fsnotify: next_i is freed during fsnotify_unmount_inodes.
    
    commit 6424babfd68dd8a83d9c60a5242d27038856599f upstream.
    
    During file system stress testing on 3.10 and 3.12 based kernels, the
    umount command occasionally hung in fsnotify_unmount_inodes in the
    section of code:
    
                    spin_lock(&inode->i_lock);
                    if (inode->i_state & (I_FREEING|I_WILL_FREE|I_NEW)) {
                            spin_unlock(&inode->i_lock);
                            continue;
                    }
    
    As this section of code holds the global inode_sb_list_lock, eventually
    the system hangs trying to acquire the lock.
    
    Multiple crash dumps showed:
    
    The inode->i_state == 0x60 and i_count == 0 and i_sb_list would point
    back at itself.  As this is not the value of list upon entry to the
    function, the kernel never exits the loop.
    
    To help narrow down problem, the call to list_del_init in
    inode_sb_list_del was changed to list_del.  This poisons the pointers in
    the i_sb_list and causes a kernel to panic if it transverse a freed
    inode.
    
    Subsequent stress testing paniced in fsnotify_unmount_inodes at the
    bottom of the list_for_each_entry_safe loop showing next_i had become
    free.
    
    We believe the root cause of the problem is that next_i is being freed
    during the window of time that the list_for_each_entry_safe loop
    temporarily releases inode_sb_list_lock to call fsnotify and
    fsnotify_inode_delete.
    
    The code in fsnotify_unmount_inodes attempts to prevent the freeing of
    inode and next_i by calling __iget.  However, the code doesn't do the
    __iget call on next_i
    
    	if i_count == 0 or
    	if i_state & (I_FREEING | I_WILL_FREE)
    
    The patch addresses this issue by advancing next_i in the above two cases
    until we either find a next_i which we can __iget or we reach the end of
    the list.  This makes the handling of next_i more closely match the
    handling of the variable "inode."
    
    The time to reproduce the hang is highly variable (from hours to days.) We
    ran the stress test on a 3.10 kernel with the proposed patch for a week
    without failure.
    
    During list_for_each_entry_safe, next_i is becoming free causing
    the loop to never terminate.  Advance next_i in those cases where
    __iget is not done.
    
    Signed-off-by: Jerry Hoemann <jerry.hoemann@hp.com>
    Cc: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
    Cc: Ken Helias <kenhelias@firemail.de>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Jan Kara <jack@suse.cz>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit adc507681d2dba391d97b0e8f65313737be64d65
Author: Ani Sinha <ani@arista.com>
Date:   Mon Sep 8 14:49:59 2014 -0700

    net:socket: set msg_namelen to 0 if msg_name is passed as NULL in msghdr struct from userland.
    
    commit 6a2a2b3ae0759843b22c929881cc184b00cc63ff upstream.
    
    Linux manpage for recvmsg and sendmsg calls does not explicitly mention setting msg_namelen to 0 when
    msg_name passed set as NULL. When developers don't set msg_namelen member in msghdr, it might contain garbage
    value which will fail the validation check and sendmsg and recvmsg calls from kernel will return EINVAL. This will
    break old binaries and any code for which there is no access to source code.
    To fix this, we set msg_namelen to 0 when msg_name is passed as NULL from userland.
    
    Signed-off-by: Ani Sinha <ani@arista.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Cc: Michal Marek <mmarek@suse.cz>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 590603b71e399e5dbf328eda7b780ee0dca939ce
Author: Tim Chen <tim.c.chen@linux.intel.com>
Date:   Fri Dec 12 15:38:12 2014 -0800

    sched/rt: Reduce rq lock contention by eliminating locking of non-feasible target
    
    commit 80e3d87b2c5582db0ab5e39610ce3707d97ba409 upstream.
    
    This patch adds checks that prevens futile attempts to move rt tasks
    to a CPU with active tasks of equal or higher priority.
    
    This reduces run queue lock contention and improves the performance of
    a well known OLTP benchmark by 0.7%.
    
    Signed-off-by: Tim Chen <tim.c.chen@linux.intel.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Shawn Bohrer <sbohrer@rgmadvisors.com>
    Cc: Suruchi Kadu <suruchi.a.kadu@intel.com>
    Cc: Doug Nelson<doug.nelson@intel.com>
    Cc: Steven Rostedt <rostedt@goodmis.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Link: http://lkml.kernel.org/r/1421430374.2399.27.camel@schen9-desk2.jf.intel.com
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit c12b6db9f1a9841949ce5776b71dffb03f911692
Author: Adam Lee <adam.lee@canonical.com>
Date:   Wed Jan 28 15:30:27 2015 -0500

    Bluetooth: ath3k: workaround the compatibility issue with xHCI controller
    
    commit c561a5753dd631920c4459a067d22679b3d110d6 upstream.
    
    BugLink: https://bugs.launchpad.net/bugs/1400215
    
    ath3k devices fail to load firmwares on xHCI buses, but work well on
    EHCI, this might be a compatibility issue between xHCI and ath3k chips.
    As my testing result, those chips will work on xHCI buses again with
    this patch.
    
    This workaround is from Qualcomm, they also did some workarounds in
    Windows driver.
    
    Signed-off-by: Adam Lee <adam.lee@canonical.com>
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 3d05f9f37cb5e1722163275b8c6284fe5570c55e
Author: Ian Abbott <abbotti@mev.co.uk>
Date:   Mon Jan 19 14:47:27 2015 +0000

    staging: comedi: cb_pcidas64: fix incorrect AI range code handling
    
    commit be8e89087ec2d2c8a1ad1e3db64bf4efdfc3c298 upstream.
    
    The hardware range code values and list of valid ranges for the AI
    subdevice is incorrect for several supported boards.  The hardware range
    code values for all boards except PCI-DAS4020/12 is determined by
    calling `ai_range_bits_6xxx()` based on the maximum voltage of the range
    and whether it is bipolar or unipolar, however it only returns the
    correct hardware range code for the PCI-DAS60xx boards.  For
    PCI-DAS6402/16 (and /12) it returns the wrong code for the unipolar
    ranges.  For PCI-DAS64/Mx/16 it returns the wrong code for all the
    ranges and the comedi range table is incorrect.
    
    Change `ai_range_bits_6xxx()` to use a look-up table pointed to by new
    member `ai_range_codes` of `struct pcidas64_board` to map the comedi
    range table indices to the hardware range codes.  Use a new comedi range
    table for the PCI-DAS64/Mx/16 boards (and the commented out variants).
    
    Signed-off-by: Ian Abbott <abbotti@mev.co.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    [Ian: Backported to 3.4]
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit f0a6690e94cd24aa1e1346f5f473d6a3c1f22a50
Author: Julian Anastasov <ja@ssi.bg>
Date:   Thu Dec 18 22:41:23 2014 +0200

    ipvs: rerouting to local clients is not needed anymore
    
    commit 579eb62ac35845686a7c4286c0a820b4eb1f96aa upstream.
    
    commit f5a41847acc5 ("ipvs: move ip_route_me_harder for ICMP")
    from 2.6.37 introduced ip_route_me_harder() call for responses to
    local clients, so that we can provide valid rt_src after SNAT.
    It was used by TCP to provide valid daddr for ip_send_reply().
    After commit 0a5ebb8000c5 ("ipv4: Pass explicit daddr arg to
    ip_send_reply()." from 3.0 this rerouting is not needed anymore
    and should be avoided, especially in LOCAL_IN.
    
    Fixes 3.12.33 crash in xfrm reported by Florian Wiessner:
    "3.12.33 - BUG xfrm_selector_match+0x25/0x2f6"
    
    Reported-by: Smart Weblications GmbH - Florian Wiessner <f.wiessner@smart-weblications.de>
    Tested-by: Smart Weblications GmbH - Florian Wiessner <f.wiessner@smart-weblications.de>
    Signed-off-by: Julian Anastasov <ja@ssi.bg>
    Signed-off-by: Simon Horman <horms@verge.net.au>
    [Julian: Backported to 3.4]
    Signed-off-by: Julian Anastasov <ja@ssi.bg>
    Acked-by: Simon Horman <horms@verge.net.au>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 729105426a47812acf524651ee5f85dae368685c
Author: Dave Kleikamp <dave.kleikamp@oracle.com>
Date:   Mon Mar 23 16:06:26 2015 -0500

    jfs: fix readdir regression
    
    Upstream commit 44512449, "jfs: fix readdir cookie incompatibility
    with NFSv4", was backported incorrectly into the stable trees which
    used the filldir callback (rather than dir_emit). The position is
    being incorrectly passed to filldir for the . and .. entries.
    
    The still-maintained stable trees that need to be fixed are 3.2.y,
    3.4.y and 3.10.y.
    
    https://bugzilla.kernel.org/show_bug.cgi?id=94741
    
    Signed-off-by: Dave Kleikamp <dave.kleikamp@oracle.com>
    Cc: jfs-discussion@lists.sourceforge.net
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit fd3fc8026677e37d2db63e2bd8ab0a5323f6d302
Author: Tim Niemeyer <tim.niemeyer@corscience.de>
Date:   Mon Mar 30 11:27:37 2015 +0200

    Bluetooth: Fix invalid length check in l2cap_information_rsp()
    
    first backport commit 6ec88fcb4aa2c33fe2fe2a23c576a7e2581c5c3d changes
    l2cap_move_channel_confirm_rsp and not the l2cap_information_rsp. So
    revert this and fix at the correct position.
    
    commit 3f6fa3d489e127ca5a5b298eabac3ff5dbe0e112 upstream.
    
    The length check is invalid since the length varies with type of
    info response.
    
    This was introduced by the commit cb3b3152b2f5939d67005cff841a1ca748b19888
    
    Because of this, l2cap info rsp is not handled and command reject is sent.
    
    > ACL data: handle 11 flags 0x02 dlen 16
            L2CAP(s): Info rsp: type 2 result 0
              Extended feature mask 0x00b8
                Enhanced Retransmission mode
                Streaming mode
                FCS Option
                Fixed Channels
    < ACL data: handle 11 flags 0x00 dlen 10
            L2CAP(s): Command rej: reason 0
              Command not understood
    
    Signed-off-by: Jaganath Kanakkassery <jaganath.k@samsung.com>
    Signed-off-by: Chan-Yeol Park <chanyeol.park@samsung.com>
    Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
    Cc: Jianguo Wu <wujianguo@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Tim Niemeyer <tim.niemeyer@corscience.de>
    Acked-by: Johan Hedberg <johan.hedberg@intel.com>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 6a688d1c2effaecd0988c0e2ad784f189206958c
Author: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Date:   Mon Mar 9 23:11:12 2015 +0200

    pagemap: do not leak physical addresses to non-privileged userspace
    
    commit ab676b7d6fbf4b294bf198fb27ade5b0e865c7ce upstream.
    
    As pointed by recent post[1] on exploiting DRAM physical imperfection,
    /proc/PID/pagemap exposes sensitive information which can be used to do
    attacks.
    
    This disallows anybody without CAP_SYS_ADMIN to read the pagemap.
    
    [1] http://googleprojectzero.blogspot.com/2015/03/exploiting-dram-rowhammer-bug-to-gain.html
    
    [ Eventually we might want to do anything more finegrained, but for now
      this is the simple model.   - Linus ]
    
    Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
    Acked-by: Konstantin Khlebnikov <khlebnikov@openvz.org>
    Acked-by: Andy Lutomirski <luto@amacapital.net>
    Cc: Pavel Emelyanov <xemul@parallels.com>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Mark Seaborn <mseaborn@chromium.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Zefan Li <lizefan@huawei.com>
    [mancha: Backported to 3.10]
    Signed-off-by: mancha security <mancha1@zoho.com>

commit 3022d3dd56f905d34054a62f569c16d5749e1e85
Author: Janne Heikkinen <janne.m.heikkinen@gmail.com>
Date:   Tue Dec 9 07:44:51 2014 +0200

    Bluetooth: Add USB device 04ca:3010 as Atheros AR3012
    
    commit 134d3b3550f050b9bec37111824452064d1ed928 upstream.
    
    Asus X553MA has USB device 04ca:3010 that is Atheros AR3012
    or compatible.
    
    Device from /sys/kernel/debug/usb/devices:
    
    T:  Bus=01 Lev=02 Prnt=02 Port=03 Cnt=02 Dev#= 27 Spd=12   MxCh= 0
    D:  Ver= 1.10 Cls=e0(wlcon) Sub=01 Prot=01 MxPS=64 #Cfgs=  1
    P:  Vendor=04ca ProdID=3010 Rev= 0.02
    C:* #Ifs= 2 Cfg#= 1 Atr=e0 MxPwr=100mA
    A:  FirstIf#= 0 IfCount= 2 Cls=e0(wlcon) Sub=01 Prot=01
    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: Janne Heikkinen <janne.m.heikkinen@gmail.com>
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    [lizf: Backported to 3.4: adjust context]
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 7461373f3b62900502b56254244fe6b49ecdc936
Author: Dmitry Tunin <hanipouspilot@gmail.com>
Date:   Tue Nov 25 20:19:52 2014 +0300

    Bluetooth: ath3k: Add support of MCI 13d3:3408 bt device
    
    commit 3bb30a7cdf9242aca90d49aa41baebf9458f96f0 upstream.
    
    Add support for Bluetooth MCI WB335 (AR9565) Wi-Fi+bt module. This
    Bluetooth module requires loading patch and sysconfig by ath3k driver.
    
    T:  Bus=01 Lev=02 Prnt=03 Port=00 Cnt=01 Dev#= 20 Spd=12   MxCh= 0
    D:  Ver= 1.10 Cls=e0(wlcon) Sub=01 Prot=01 MxPS=64 #Cfgs=  1
    P:  Vendor=13d3 ProdID=3408 Rev= 0.02
    C:* #Ifs= 2 Cfg#= 1 Atr=e0 MxPwr=100mA
    A:  FirstIf#= 0 IfCount= 2 Cls=e0(wlcon) Sub=01 Prot=01
    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: Dmitry Tunin <hanipouspilot@gmail.com>
    Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 94a30505c3defd78eb13e94d9a7d69a3c2e092bc
Author: Anantha Krishnan <ananthk@codeaurora.org>
Date:   Mon Oct 6 16:31:49 2014 +0530

    Bluetooth: Add support for Acer [0489:e078]
    
    commit 4b552bc9edfdc947862af225a0e2521edb5d37a0 upstream.
    
    Add support for the QCA6174 chip.
    
        T:  Bus=06 Lev=01 Prnt=01 Port=01 Cnt=02 Dev#=  3 Spd=12  MxCh= 0
        D:  Ver= 1.10 Cls=e0(wlcon) Sub=01 Prot=01 MxPS=64 #Cfgs=  1
        P:  Vendor=0489 ProdID=e078 Rev=00.01
        C:  #Ifs= 2 Cfg#= 1 Atr=e0 MxPwr=100mA
        I:  If#= 0 Alt= 0 #EPs= 3 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
        I:  If#= 1 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    
    Signed-off-by: Anantha Krishnan <ananthk@codeaurora.org>
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Cc: Joseph Salisbury <joseph.salisbury@canonical.com>
    [lizf: Backported to 3.4: adjust context]
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit a756fa648c16bad2539fd8eac76665568cba4942
Author: Vincent Zwanenburg <vincentz@topmail.ie>
Date:   Fri Aug 8 12:33:56 2014 +0100

    Add a new PID/VID 0227/0930 for AR3012.
    
    commit 89d2975fa06e66ea0d3665d91f799fb1ce4b8bad upstream.
    
    usb devices info:
    
    T:  Bus=01 Lev=02 Prnt=05 Port=00 Cnt=01 Dev#= 20 Spd=12   MxCh= 0
    D:  Ver= 1.10 Cls=e0(wlcon) Sub=01 Prot=01 MxPS=64 #Cfgs=  1
    P:  Vendor=0930 ProdID=0227 Rev= 0.02
    C:* #Ifs= 2 Cfg#= 1 Atr=e0 MxPwr=100mA
    A:  FirstIf#= 0 IfCount= 2 Cls=e0(wlcon) Sub=01 Prot=01
    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: Vincent Zwanenburg <vincentz@topmail.ie>
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    [lizf: Backported to 3.4: adjust context]
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit c96bfe4a45742b79a2e076f1a10ae2becda8914f
Author: Marcel Holtmann <marcel@holtmann.org>
Date:   Mon Jul 21 14:02:33 2014 +0200

    Bluetooth: Add support for Broadcom device of Asus Z97-DELUXE motherboard
    
    commit c2aef6e8cbebd60f79555baeb9266e220f135a44 upstream.
    
    The Asus Z97-DELUXE motherboard contains a Broadcom based Bluetooth
    controller on the USB bus. However vendor and product ID are listed
    as ASUSTek Computer.
    
    T:  Bus=01 Lev=01 Prnt=01 Port=01 Cnt=02 Dev#=  3 Spd=12   MxCh= 0
    D:  Ver= 2.00 Cls=ff(vend.) Sub=01 Prot=01 MxPS=64 #Cfgs=  1
    P:  Vendor=0b05 ProdID=17cf Rev= 1.12
    S:  Manufacturer=Broadcom Corp
    S:  Product=BCM20702A0
    S:  SerialNumber=54271E910064
    C:* #Ifs= 4 Cfg#= 1 Atr=e0 MxPwr=  0mA
    I:* If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) 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=ff(vend.) 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=ff(vend.) 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=ff(vend.) 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=ff(vend.) 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=ff(vend.) 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=ff(vend.) 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
    I:* If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
    E:  Ad=84(I) Atr=02(Bulk) MxPS=  32 Ivl=0ms
    E:  Ad=04(O) Atr=02(Bulk) MxPS=  32 Ivl=0ms
    I:* If#= 3 Alt= 0 #EPs= 0 Cls=fe(app. ) Sub=01 Prot=01 Driver=(none)
    
    Reported-by: Jerome Leclanche <jerome@leclan.ch>
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
    [lizf: Backported to 3.4: adjust context]
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 394c1f2da5c1e388c9b47e803db23c6b92827088
Author: Anantha Krishnan <ananthk@codeaurora.org>
Date:   Tue Jul 8 19:25:08 2014 +0530

    Bluetooth: Add support for Acer [13D3:3432]
    
    commit fa2f1394fe9c1a217213f02df77812701de6362f upstream.
    
    Add support for the QCA6174 chip.
    
        T:  Bus=04 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 30 Spd=12  MxCh= 0
        D:  Ver= 1.10 Cls=e0(wlcon) Sub=01 Prot=01 MxPS=64 #Cfgs=  1
        P:  Vendor=13d3 ProdID=3432 Rev=00.02
        C:  #Ifs= 2 Cfg#= 1 Atr=e0 MxPwr=100mA
        I:  If#= 0 Alt= 0 #EPs= 3 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
        I:  If#= 1 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    
    Signed-off-by: Anantha Krishnan <ananthk@codeaurora.org>
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit afe1e02053b226d3d732492f7c40b6bd605f71ef
Author: Marcel Holtmann <marcel@holtmann.org>
Date:   Sun Jul 6 14:53:55 2014 +0200

    Bluetooth: Ignore isochronous endpoints for Intel USB bootloader
    
    commit d92f2df0565ea04101d6ac04bdc10feeb1d93c94 upstream.
    
    The isochronous endpoints are not valid when the Intel Bluetooth
    controller boots up in bootloader mode. So just mark these endpoints
    as broken and then they will not be configured.
    
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit a566d17793129c56c39bd42f2d2147446a5e2632
Author: Marcel Holtmann <marcel@holtmann.org>
Date:   Sun Jul 6 13:29:58 2014 +0200

    Bluetooth: Add support for Intel bootloader devices
    
    commit 40df783d1ef1989ac454e3dfcda017270b8950e6 upstream.
    
    Intel Bluetooth devices that boot up in bootloader mode can not
    be used as generic HCI devices, but their HCI transport is still
    valuable and so bring that up as raw-only devices.
    
    T:  Bus=02 Lev=02 Prnt=03 Port=00 Cnt=01 Dev#= 14 Spd=12   MxCh= 0
    D:  Ver= 1.10 Cls=ff(vend.) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
    P:  Vendor=8087 ProdID=0a5a Rev= 0.00
    S:  Manufacturer=Intel(R) Corporation
    S:  Product=Intel(R) Wilkins Peak 2x2
    S:  SerialNumber=001122334455 WP_A0
    C:* #Ifs= 2 Cfg#= 1 Atr=e0 MxPwr=100mA
    I:* If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=(none)
    E:  Ad=81(I) Atr=03(Int.) MxPS=  64 Ivl=1ms
    E:  Ad=02(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms
    E:  Ad=82(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms
    I:* If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=(none)
    E:  Ad=03(O) Atr=01(Isoc) MxPS=   0 Ivl=1ms
    E:  Ad=83(I) Atr=01(Isoc) MxPS=   0 Ivl=1ms
    I:  If#= 1 Alt= 1 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=(none)
    E:  Ad=03(O) Atr=01(Isoc) MxPS=   9 Ivl=1ms
    E:  Ad=83(I) Atr=01(Isoc) MxPS=   9 Ivl=1ms
    I:  If#= 1 Alt= 2 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=(none)
    E:  Ad=03(O) Atr=01(Isoc) MxPS=  17 Ivl=1ms
    E:  Ad=83(I) Atr=01(Isoc) MxPS=  17 Ivl=1ms
    I:  If#= 1 Alt= 3 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=(none)
    E:  Ad=03(O) Atr=01(Isoc) MxPS=  25 Ivl=1ms
    E:  Ad=83(I) Atr=01(Isoc) MxPS=  25 Ivl=1ms
    I:  If#= 1 Alt= 4 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=(none)
    E:  Ad=03(O) Atr=01(Isoc) MxPS=  33 Ivl=1ms
    E:  Ad=83(I) Atr=01(Isoc) MxPS=  33 Ivl=1ms
    I:  If#= 1 Alt= 5 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=(none)
    E:  Ad=03(O) Atr=01(Isoc) MxPS=  49 Ivl=1ms
    E:  Ad=83(I) Atr=01(Isoc) MxPS=  49 Ivl=1ms
    
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
    [lizf: Backported to 3.4: there's no BTUSB_BCM_PATCHRAM]
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit e9c6ffeab29d7b4144c4523bd58148326341c9dd
Author: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Date:   Tue Feb 18 18:26:20 2014 +0200

    Bluetooth: append new supported device to the list [0b05:17d0]
    
    commit a735f9e22432899cee188d167966782c29246390 upstream.
    
    The device found on Asus Z87 Expert motherboard requires firmware to work
    correctly.
    
    T:  Bus=03 Lev=01 Prnt=01 Port=03 Cnt=02 Dev#=  3 Spd=12  MxCh= 0
    D:  Ver= 1.10 Cls=e0(wlcon) Sub=01 Prot=01 MxPS=64 #Cfgs=  1
    P:  Vendor=0b05 ProdID=17d0 Rev=00.02
    C:  #Ifs= 2 Cfg#= 1 Atr=e0 MxPwr=100mA
    I:  If#= 0 Alt= 0 #EPs= 3 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    I:  If#= 1 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    
    Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    [lizf: Backported to 3.4: adjust context]
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 75aac82d6a3ec669fcce6490bb52f4421566f49a
Author: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Date:   Tue Feb 18 18:26:19 2014 +0200

    Bluetooth: sort the list of IDs in the source code
    
    commit 0b8800623d3f12dd40a039aa191d52bfa4eef5b4 upstream.
    
    This will help to manage table of supported IDs.
    
    There is no functional change.
    
    Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    [lizf: Backported to 3.4: sort the list by myself]
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 7191cb93e0ba61583388dd51a92ee5176d4c804c
Author: Fernando Soto <fsoto@bluecatnetworks.com>
Date:   Fri Jun 14 23:13:35 2013 +0000

    Drivers: hv: vmbus: incorrect device name is printed when child device is unregistered
    
    commit 84672369ffb98a51d4ddf74c20a23636da3ad615 upstream.
    
    Whenever a device is unregistered in vmbus_device_unregister (drivers/hv/vmbus_drv.c), the device name in the log message may contain garbage as the memory has already been freed by the time pr_info is called. Log example:
     [ 3149.170475] hv_vmbus: child device àõsèè0_5 unregistered
    
    By logging the message just before calling device_unregister, the correct device name is printed:
    [ 3145.034652] hv_vmbus: child device vmbus_0_5 unregistered
    
    Also changing register & unregister messages to debug to avoid unnecessarily cluttering the kernel log.
    
    Signed-off-by: Fernando M Soto <fsoto@bluecatnetworks.com>
    Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: Joseph Salisbury <joseph.salisbury@canonical.com>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 28cd54f27d309bd65db8ff4b8e6275345287484c
Author: Ryusuke Konishi <konishi.ryusuke@lab.ntt.co.jp>
Date:   Thu Feb 5 12:25:20 2015 -0800

    nilfs2: fix deadlock of segment constructor over I_SYNC flag
    
    commit 7ef3ff2fea8bf5e4a21cef47ad87710a3d0fdb52 upstream.
    
    Nilfs2 eventually hangs in a stress test with fsstress program.  This
    issue was caused by the following deadlock over I_SYNC flag between
    nilfs_segctor_thread() and writeback_sb_inodes():
    
      nilfs_segctor_thread()
        nilfs_segctor_thread_construct()
          nilfs_segctor_unlock()
            nilfs_dispose_list()
              iput()
                iput_final()
                  evict()
                    inode_wait_for_writeback()  * wait for I_SYNC flag
    
      writeback_sb_inodes()
         * set I_SYNC flag on inode->i_state
        __writeback_single_inode()
          do_writepages()
            nilfs_writepages()
              nilfs_construct_dsync_segment()
                nilfs_segctor_sync()
                   * wait for completion of segment constructor
        inode_sync_complete()
           * clear I_SYNC flag after __writeback_single_inode() completed
    
    writeback_sb_inodes() calls do_writepages() for dirty inodes after
    setting I_SYNC flag on inode->i_state.  do_writepages() in turn calls
    nilfs_writepages(), which can run segment constructor and wait for its
    completion.  On the other hand, segment constructor calls iput(), which
    can call evict() and wait for the I_SYNC flag on
    inode_wait_for_writeback().
    
    Since segment constructor doesn't know when I_SYNC will be set, it
    cannot know whether iput() will block or not unless inode->i_nlink has a
    non-zero count.  We can prevent evict() from being called in iput() by
    implementing sop->drop_inode(), but it's not preferable to leave inodes
    with i_nlink == 0 for long periods because it even defers file
    truncation and inode deallocation.  So, this instead resolves the
    deadlock by calling iput() asynchronously with a workqueue for inodes
    with i_nlink == 0.
    
    Signed-off-by: Ryusuke Konishi <konishi.ryusuke@lab.ntt.co.jp>
    Cc: Al Viro <viro@zeniv.linux.org.uk>
    Tested-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 708ef3375975121fbe187397f478e17877c67168
Author: Eric Nelson <eric.nelson@boundarydevices.com>
Date:   Fri Jan 30 14:07:55 2015 -0700

    ASoC: sgtl5000: add delay before first I2C access
    
    commit 58cc9c9a175885bbf6bae3acf18233d0a8229a84 upstream.
    
    To quote from section 1.3.1 of the data sheet:
    	The SGTL5000 has an internal reset that is deasserted
    	8 SYS_MCLK cycles after all power rails have been brought
    	up. After this time, communication can start
    
    	...
    	1.0us represents 8 SYS_MCLK cycles at the minimum 8.0 MHz SYS_MCLK.
    
    Signed-off-by: Eric Nelson <eric.nelson@boundarydevices.com>
    Reviewed-by: Fabio Estevam <fabio.estevam@freescale.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 6b4a9a084334717868e054002ad7863a3b4cceef
Author: Saran Maruti Ramanara <saran.neti@telus.com>
Date:   Thu Jan 29 11:05:58 2015 +0100

    net: sctp: fix passing wrong parameter header to param_type2af in sctp_process_param
    
    commit cfbf654efc6d78dc9812e030673b86f235bf677d upstream.
    
    When making use of RFC5061, section 4.2.4. for setting the primary IP
    address, we're passing a wrong parameter header to param_type2af(),
    resulting always in NULL being returned.
    
    At this point, param.p points to a sctp_addip_param struct, containing
    a sctp_paramhdr (type = 0xc004, length = var), and crr_id as a correlation
    id. Followed by that, as also presented in RFC5061 section 4.2.4., comes
    the actual sctp_addr_param, which also contains a sctp_paramhdr, but
    this time with the correct type SCTP_PARAM_IPV{4,6}_ADDRESS that
    param_type2af() can make use of. Since we already hold a pointer to
    addr_param from previous line, just reuse it for param_type2af().
    
    Fixes: d6de3097592b ("[SCTP]: Add the handling of "Set Primary IP Address" parameter to INIT")
    Signed-off-by: Saran Maruti Ramanara <saran.neti@telus.com>
    Signed-off-by: Daniel Borkmann <dborkman@redhat.com>
    Acked-by: Vlad Yasevich <vyasevich@gmail.com>
    Acked-by: Neil Horman <nhorman@tuxdriver.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 999a6c8f6f5188b1b58404dfb41cd4248e13d32c
Author: Daniel Borkmann <dborkman@redhat.com>
Date:   Mon Nov 10 17:54:26 2014 +0100

    net: sctp: fix NULL pointer dereference in af->from_addr_param on malformed packet
    
    commit e40607cbe270a9e8360907cb1e62ddf0736e4864 upstream.
    
    An SCTP server doing ASCONF will panic on malformed INIT ping-of-death
    in the form of:
    
      ------------ INIT[PARAM: SET_PRIMARY_IP] ------------>
    
    While the INIT chunk parameter verification dissects through many things
    in order to detect malformed input, it misses to actually check parameters
    inside of parameters. E.g. RFC5061, section 4.2.4 proposes a 'set primary
    IP address' parameter in ASCONF, which has as a subparameter an address
    parameter.
    
    So an attacker may send a parameter type other than SCTP_PARAM_IPV4_ADDRESS
    or SCTP_PARAM_IPV6_ADDRESS, param_type2af() will subsequently return 0
    and thus sctp_get_af_specific() returns NULL, too, which we then happily
    dereference unconditionally through af->from_addr_param().
    
    The trace for the log:
    
    BUG: unable to handle kernel NULL pointer dereference at 0000000000000078
    IP: [<ffffffffa01e9c62>] sctp_process_init+0x492/0x990 [sctp]
    PGD 0
    Oops: 0000 [#1] SMP
    [...]
    Pid: 0, comm: swapper Not tainted 2.6.32-504.el6.x86_64 #1 Bochs Bochs
    RIP: 0010:[<ffffffffa01e9c62>]  [<ffffffffa01e9c62>] sctp_process_init+0x492/0x990 [sctp]
    [...]
    Call Trace:
     <IRQ>
     [<ffffffffa01f2add>] ? sctp_bind_addr_copy+0x5d/0xe0 [sctp]
     [<ffffffffa01e1fcb>] sctp_sf_do_5_1B_init+0x21b/0x340 [sctp]
     [<ffffffffa01e3751>] sctp_do_sm+0x71/0x1210 [sctp]
     [<ffffffffa01e5c09>] ? sctp_endpoint_lookup_assoc+0xc9/0xf0 [sctp]
     [<ffffffffa01e61f6>] sctp_endpoint_bh_rcv+0x116/0x230 [sctp]
     [<ffffffffa01ee986>] sctp_inq_push+0x56/0x80 [sctp]
     [<ffffffffa01fcc42>] sctp_rcv+0x982/0xa10 [sctp]
     [<ffffffffa01d5123>] ? ipt_local_in_hook+0x23/0x28 [iptable_filter]
     [<ffffffff8148bdc9>] ? nf_iterate+0x69/0xb0
     [<ffffffff81496d10>] ? ip_local_deliver_finish+0x0/0x2d0
     [<ffffffff8148bf86>] ? nf_hook_slow+0x76/0x120
     [<ffffffff81496d10>] ? ip_local_deliver_finish+0x0/0x2d0
    [...]
    
    A minimal way to address this is to check for NULL as we do on all
    other such occasions where we know sctp_get_af_specific() could
    possibly return with NULL.
    
    Fixes: d6de3097592b ("[SCTP]: Add the handling of "Set Primary IP Address" parameter to INIT")
    Signed-off-by: Daniel Borkmann <dborkman@redhat.com>
    Cc: Vlad Yasevich <vyasevich@gmail.com>
    Acked-by: Neil Horman <nhorman@tuxdriver.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 2e835e9f16acd0fd6ace354b62715c05979c96bf
Author: Johan Hovold <johan@kernel.org>
Date:   Mon Jan 26 12:02:46 2015 +0100

    gpio: sysfs: fix memory leak in gpiod_sysfs_set_active_low
    
    commit 49d2ca84e433dab854c7a866bc6add09cfab682d upstream.
    
    Fix memory leak in the gpio sysfs interface due to failure to drop
    reference to device returned by class_find_device when setting the
    gpio-line polarity.
    
    Fixes: 0769746183ca ("gpiolib: add support for changing value polarity
    in sysfs")
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    [lizf: Backported to 3.4: adjust filename]
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 8566a606c062d4ff1982250c96740e8b4e9c8758
Author: Johan Hovold <johan@kernel.org>
Date:   Mon Jan 26 12:02:45 2015 +0100

    gpio: sysfs: fix memory leak in gpiod_export_link
    
    commit 0f303db08df0df9bd0966443ad6001e63960af16 upstream.
    
    Fix memory leak in the gpio sysfs interface due to failure to drop
    reference to device returned by class_find_device when creating a link.
    
    Fixes: a4177ee7f1a8 ("gpiolib: allow exported GPIO nodes to be named
    using sysfs links")
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    [lizf: Backported to 3.4: adjust filename]
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit db6c390a258149666ccee4a0bea5f8c7acb033bc
Author: Hemmo Nieminen <hemmo.nieminen@iki.fi>
Date:   Thu Jan 15 23:01:59 2015 +0200

    MIPS: Fix kernel lockup or crash after CPU offline/online
    
    commit c7754e75100ed5e3068ac5085747f2bfc386c8d6 upstream.
    
    As printk() invocation can cause e.g. a TLB miss, printk() cannot be
    called before the exception handlers have been properly initialized.
    This can happen e.g. when netconsole has been loaded as a kernel module
    and the TLB table has been cleared when a CPU was offline.
    
    Call cpu_report() in start_secondary() only after the exception handlers
    have been initialized to fix this.
    
    Without the patch the kernel will randomly either lockup or crash
    after a CPU is onlined and the console driver is a module.
    
    Signed-off-by: Hemmo Nieminen <hemmo.nieminen@iki.fi>
    Signed-off-by: Aaro Koskinen <aaro.koskinen@iki.fi>
    Cc: David Daney <david.daney@cavium.com>
    Cc: linux-mips@linux-mips.org
    Cc: linux-kernel@vger.kernel.org
    Patchwork: https://patchwork.linux-mips.org/patch/8953/
    Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
    [lizf: Backported to 3.4: adjust context]
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit e41d162f727a376f351b74ecf2586a988f7a3fa2
Author: Nicolas Dichtel <nicolas.dichtel@6wind.com>
Date:   Mon Jan 26 22:28:13 2015 +0100

    caif: remove wrong dev_net_set() call
    
    commit 8997c27ec41127bf57421cc0205413d525421ddc upstream.
    
    src_net points to the netns where the netlink message has been received. This
    netns may be different from the netns where the interface is created (because
    the user may add IFLA_NET_NS_[PID|FD]). In this case, src_net is the link netns.
    
    It seems wrong to override the netns in the newlink() handler because if it
    was not already src_net, it means that the user explicitly asks to create the
    netdevice in another netns.
    
    CC: Sjur Brændeland <sjur.brandeland@stericsson.com>
    CC: Dmitry Tarnyagin <dmitry.tarnyagin@lockless.no>
    Fixes: 8391c4aab1aa ("caif: Bugfixes in CAIF netdevice for close and flow control")
    Fixes: c41254006377 ("caif-hsi: Add rtnl support")
    Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [lizf: Backported to 3.4: drop the change to drivers/net/caif/caif_hsi.c]
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit bd3ccdba19b80e736b7844b6800fa9836fbca5af
Author: karl beldan <karl.beldan@gmail.com>
Date:   Wed Jan 28 10:58:11 2015 +0100

    lib/checksum.c: fix carry in csum_tcpudp_nofold
    
    commit 150ae0e94634714b23919f0c333fee28a5b199d5 upstream.
    
    The carry from the 64->32bits folding was dropped, e.g with:
    saddr=0xFFFFFFFF daddr=0xFF0000FF len=0xFFFF proto=0 sum=1,
    csum_tcpudp_nofold returned 0 instead of 1.
    
    Signed-off-by: Karl Beldan <karl.beldan@rivierawaves.com>
    Cc: Al Viro <viro@ZenIV.linux.org.uk>
    Cc: Eric Dumazet <eric.dumazet@gmail.com>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Cc: Mike Frysinger <vapier@gentoo.org>
    Cc: netdev@vger.kernel.org
    Cc: linux-kernel@vger.kernel.org
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 574b59db6504ed3867c2f566f167f764e97ee402
Author: Takashi Iwai <tiwai@suse.de>
Date:   Tue Jan 13 10:53:20 2015 +0100

    ALSA: ak411x: Fix stall in work callback
    
    commit 4161b4505f1690358ac0a9ee59845a7887336b21 upstream.
    
    When ak4114 work calls its callback and the callback invokes
    ak4114_reinit(), it stalls due to flush_delayed_work().  For avoiding
    this, control the reentrance by introducing a refcount.  Also
    flush_delayed_work() is replaced with cancel_delayed_work_sync().
    
    The exactly same bug is present in ak4113.c and fixed as well.
    
    Reported-by: Pavel Hofman <pavel.hofman@ivitera.com>
    Acked-by: Jaroslav Kysela <perex@perex.cz>
    Tested-by: Pavel Hofman <pavel.hofman@ivitera.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    [lizf: Backported to 3.4: snd_ak4113_reinit() and snd_ak4114_reinit()
    used flush_delayed_work_sync() instead of flush_delayed_work()]
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit b278df5446192f83a6a371d031360c00501ab558
Author: Bo Shen <voice.shen@atmel.com>
Date:   Tue Jan 20 15:43:16 2015 +0800

    ASoC: atmel_ssc_dai: fix start event for I2S mode
    
    commit a43bd7e125143b875caae6d4f9938855b440faaf upstream.
    
    According to the I2S specification information as following:
      - WS = 0, channel 1 (left)
      - WS = 1, channel 2 (right)
    So, the start event should be TF/RF falling edge.
    
    Reported-by: Songjun Wu <songjun.wu@atmel.com>
    Signed-off-by: Bo Shen <voice.shen@atmel.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit d99e455e8d53d1c85ab05ac8beea4898fd78e65f
Author: Felix Fietkau <nbd@openwrt.org>
Date:   Thu Jan 15 19:05:28 2015 +0100

    MIPS: IRQ: Fix disable_irq on CPU IRQs
    
    commit a3e6c1eff54878506b2dddcc202df9cc8180facb upstream.
    
    If the irq_chip does not define .irq_disable, any call to disable_irq
    will defer disabling the IRQ until it fires while marked as disabled.
    This assumes that the handler function checks for this condition, which
    handle_percpu_irq does not. In this case, calling disable_irq leads to
    an IRQ storm, if the interrupt fires while disabled.
    
    This optimization is only useful when disabling the IRQ is slow, which
    is not true for the MIPS CPU IRQ.
    
    Disable this optimization by implementing .irq_disable and .irq_enable
    
    Signed-off-by: Felix Fietkau <nbd@openwrt.org>
    Cc: linux-mips@linux-mips.org
    Patchwork: https://patchwork.linux-mips.org/patch/8949/
    Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit a91da0b39a785448ef420c4ac389d03f4743a836
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Sun Oct 26 19:31:10 2014 -0400

    deal with deadlock in d_walk()
    
    commit ca5358ef75fc69fee5322a38a340f5739d997c10 upstream.
    
    ... by not hitting rename_retry for reasons other than rename having
    happened.  In other words, do _not_ restart when finding that
    between unlocking the child and locking the parent the former got
    into __dentry_kill().  Skip the killed siblings instead...
    
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    [bwh: Backported to 3.2:
     - As we only have try_to_ascend() and not d_walk(), apply this
       change to all callers of try_to_ascend()
     - Adjust context to make __dentry_kill() apply to d_kill()]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
    [lizf: Backported to 3.4: fold the fix 2d5a2e6775fa in 3.2.y into this patch]
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 6fd17def6d964c81205230e02b4208c653106d51
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Sun Oct 26 19:19:16 2014 -0400

    move d_rcu from overlapping d_child to overlapping d_alias
    
    commit 946e51f2bf37f1656916eb75bd0742ba33983c28 upstream.
    
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    [bwh: Backported to 3.2:
     - Apply name changes in all the different places we use d_alias and d_child
     - Move the WARN_ON() in __d_free() to d_free() as we don't have dentry_free()]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
    [lizf: Backported to 3.4:
     - adjust context
     - need one more name change in debugfs]

commit a42e15a485c14f6d994192af4c16775fbd6c1126
Author: Sasha Levin <sasha.levin@oracle.com>
Date:   Mon Dec 29 09:39:01 2014 -0500

    KEYS: close race between key lookup and freeing
    
    commit a3a8784454692dd72e5d5d34dcdab17b4420e74c upstream.
    
    When a key is being garbage collected, it's key->user would get put before
    the ->destroy() callback is called, where the key is removed from it's
    respective tracking structures.
    
    This leaves a key hanging in a semi-invalid state which leaves a window open
    for a different task to try an access key->user. An example is
    find_keyring_by_name() which would dereference key->user for a key that is
    in the process of being garbage collected (where key->user was freed but
    ->destroy() wasn't called yet - so it's still present in the linked list).
    
    This would cause either a panic, or corrupt memory.
    
    Fixes CVE-2014-9529.
    
    Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
    Signed-off-by: David Howells <dhowells@redhat.com>
    [lizf: Backported to 3.4: adjust indentation]
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 565d34077a24bf7819e8fbbb6c93e4d6271c992f
Author: Hector Marco-Gisbert <hecmargi@upv.es>
Date:   Sat Feb 14 09:33:50 2015 -0800

    x86, mm/ASLR: Fix stack randomization on 64-bit systems
    
    commit 4e7c22d447bb6d7e37bfe39ff658486ae78e8d77 upstream.
    
    The issue is that the stack for processes is not properly randomized on
    64 bit architectures due to an integer overflow.
    
    The affected function is randomize_stack_top() in file
    "fs/binfmt_elf.c":
    
      static unsigned long randomize_stack_top(unsigned long stack_top)
      {
               unsigned int random_variable = 0;
    
               if ((current->flags & PF_RANDOMIZE) &&
                       !(current->personality & ADDR_NO_RANDOMIZE)) {
                       random_variable = get_random_int() & STACK_RND_MASK;
                       random_variable <<= PAGE_SHIFT;
               }
               return PAGE_ALIGN(stack_top) + random_variable;
               return PAGE_ALIGN(stack_top) - random_variable;
      }
    
    Note that, it declares the "random_variable" variable as "unsigned int".
    Since the result of the shifting operation between STACK_RND_MASK (which
    is 0x3fffff on x86_64, 22 bits) and PAGE_SHIFT (which is 12 on x86_64):
    
    	  random_variable <<= PAGE_SHIFT;
    
    then the two leftmost bits are dropped when storing the result in the
    "random_variable". This variable shall be at least 34 bits long to hold
    the (22+12) result.
    
    These two dropped bits have an impact on the entropy of process stack.
    Concretely, the total stack entropy is reduced by four: from 2^28 to
    2^30 (One fourth of expected entropy).
    
    This patch restores back the entropy by correcting the types involved
    in the operations in the functions randomize_stack_top() and
    stack_maxrandom_size().
    
    The successful fix can be tested with:
    
      $ for i in `seq 1 10`; do cat /proc/self/maps | grep stack; done
      7ffeda566000-7ffeda587000 rw-p 00000000 00:00 0                          [stack]
      7fff5a332000-7fff5a353000 rw-p 00000000 00:00 0                          [stack]
      7ffcdb7a1000-7ffcdb7c2000 rw-p 00000000 00:00 0                          [stack]
      7ffd5e2c4000-7ffd5e2e5000 rw-p 00000000 00:00 0                          [stack]
      ...
    
    Once corrected, the leading bytes should be between 7ffc and 7fff,
    rather than always being 7fff.
    
    Signed-off-by: Hector Marco-Gisbert <hecmargi@upv.es>
    Signed-off-by: Ismael Ripoll <iripoll@upv.es>
    [ Rebased, fixed 80 char bugs, cleaned up commit message, added test example and CVE ]
    Signed-off-by: Kees Cook <keescook@chromium.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Al Viro <viro@zeniv.linux.org.uk>
    Fixes: CVE-2015-1593
    Link: http://lkml.kernel.org/r/20150214173350.GA18393@www.outflux.net
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit b0f741c5d11b1b2bafd8392f0cb4d8ac25be9164
Author: Daniel Borkmann <dborkman@redhat.com>
Date:   Thu Oct 9 22:55:31 2014 +0200

    net: sctp: fix skb_over_panic when receiving malformed ASCONF chunks
    
    commit 9de7922bc709eee2f609cd01d98aaedc4cf5ea74 upstream.
    
    Commit 6f4c618ddb0 ("SCTP : Add paramters validity check for
    ASCONF chunk") added basic verification of ASCONF chunks, however,
    it is still possible to remotely crash a server by sending a
    special crafted ASCONF chunk, even up to pre 2.6.12 kernels:
    
    skb_over_panic: text:ffffffffa01ea1c3 len:31056 put:30768
     head:ffff88011bd81800 data:ffff88011bd81800 tail:0x7950
     end:0x440 dev:<NULL>
     ------------[ cut here ]------------
    kernel BUG at net/core/skbuff.c:129!
    [...]
    Call Trace:
     <IRQ>
     [<ffffffff8144fb1c>] skb_put+0x5c/0x70
     [<ffffffffa01ea1c3>] sctp_addto_chunk+0x63/0xd0 [sctp]
     [<ffffffffa01eadaf>] sctp_process_asconf+0x1af/0x540 [sctp]
     [<ffffffff8152d025>] ? _read_unlock_bh+0x15/0x20
     [<ffffffffa01e0038>] sctp_sf_do_asconf+0x168/0x240 [sctp]
     [<ffffffffa01e3751>] sctp_do_sm+0x71/0x1210 [sctp]
     [<ffffffff8147645d>] ? fib_rules_lookup+0xad/0xf0
     [<ffffffffa01e6b22>] ? sctp_cmp_addr_exact+0x32/0x40 [sctp]
     [<ffffffffa01e8393>] sctp_assoc_bh_rcv+0xd3/0x180 [sctp]
     [<ffffffffa01ee986>] sctp_inq_push+0x56/0x80 [sctp]
     [<ffffffffa01fcc42>] sctp_rcv+0x982/0xa10 [sctp]
     [<ffffffffa01d5123>] ? ipt_local_in_hook+0x23/0x28 [iptable_filter]
     [<ffffffff8148bdc9>] ? nf_iterate+0x69/0xb0
     [<ffffffff81496d10>] ? ip_local_deliver_finish+0x0/0x2d0
     [<ffffffff8148bf86>] ? nf_hook_slow+0x76/0x120
     [<ffffffff81496d10>] ? ip_local_deliver_finish+0x0/0x2d0
     [<ffffffff81496ded>] ip_local_deliver_finish+0xdd/0x2d0
     [<ffffffff81497078>] ip_local_deliver+0x98/0xa0
     [<ffffffff8149653d>] ip_rcv_finish+0x12d/0x440
     [<ffffffff81496ac5>] ip_rcv+0x275/0x350
     [<ffffffff8145c88b>] __netif_receive_skb+0x4ab/0x750
     [<ffffffff81460588>] netif_receive_skb+0x58/0x60
    
    This can be triggered e.g., through a simple scripted nmap
    connection scan injecting the chunk after the handshake, for
    example, ...
    
      -------------- INIT[ASCONF; ASCONF_ACK] ------------->
      <----------- INIT-ACK[ASCONF; ASCONF_ACK] ------------
      -------------------- COOKIE-ECHO -------------------->
      <-------------------- COOKIE-ACK ---------------------
      ------------------ ASCONF; UNKNOWN ------------------>
    
    ... where ASCONF chunk of length 280 contains 2 parameters ...
    
      1) Add IP address parameter (param length: 16)
      2) Add/del IP address parameter (param length: 255)
    
    ... followed by an UNKNOWN chunk of e.g. 4 bytes. Here, the
    Address Parameter in the ASCONF chunk is even missing, too.
    This is just an example and similarly-crafted ASCONF chunks
    could be used just as well.
    
    The ASCONF chunk passes through sctp_verify_asconf() as all
    parameters passed sanity checks, and after walking, we ended
    up successfully at the chunk end boundary, and thus may invoke
    sctp_process_asconf(). Parameter walking is done with
    WORD_ROUND() to take padding into account.
    
    In sctp_process_asconf()'s TLV processing, we may fail in
    sctp_process_asconf_param() e.g., due to removal of the IP
    address that is also the source address of the packet containing
    the ASCONF chunk, and thus we need to add all TLVs after the
    failure to our ASCONF response to remote via helper function
    sctp_add_asconf_response(), which basically invokes a
    sctp_addto_chunk() adding the error parameters to the given
    skb.
    
    When walking to the next parameter this time, we proceed
    with ...
    
      length = ntohs(asconf_param->param_hdr.length);
      asconf_param = (void *)asconf_param + length;
    
    ... instead of the WORD_ROUND()'ed length, thus resulting here
    in an off-by-one that leads to reading the follow-up garbage
    parameter length of 12336, and thus throwing an skb_over_panic
    for the reply when trying to sctp_addto_chunk() next time,
    which implicitly calls the skb_put() with that length.
    
    Fix it by using sctp_walk_params() [ which is also used in
    INIT parameter processing ] macro in the verification *and*
    in ASCONF processing: it will make sure we don't spill over,
    that we walk parameters WORD_ROUND()'ed. Moreover, we're being
    more defensive and guard against unknown parameter types and
    missized addresses.
    
    Joint work with Vlad Yasevich.
    
    Fixes: b896b82be4ae ("[SCTP] ADDIP: Support for processing incoming ASCONF_ACK chunks.")
    Signed-off-by: Daniel Borkmann <dborkman@redhat.com>
    Signed-off-by: Vlad Yasevich <vyasevich@gmail.com>
    Acked-by: Neil Horman <nhorman@tuxdriver.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 d3fdf67442c2c1c97390176ce3451a6ae48450fe
Author: Daniel Borkmann <dborkman@redhat.com>
Date:   Thu Oct 9 22:55:32 2014 +0200

    net: sctp: fix panic on duplicate ASCONF chunks
    
    commit b69040d8e39f20d5215a03502a8e8b4c6ab78395 upstream.
    
    When receiving a e.g. semi-good formed connection scan in the
    form of ...
    
      -------------- INIT[ASCONF; ASCONF_ACK] ------------->
      <----------- INIT-ACK[ASCONF; ASCONF_ACK] ------------
      -------------------- COOKIE-ECHO -------------------->
      <-------------------- COOKIE-ACK ---------------------
      ---------------- ASCONF_a; ASCONF_b ----------------->
    
    ... where ASCONF_a equals ASCONF_b chunk (at least both serials
    need to be equal), we panic an SCTP server!
    
    The problem is that good-formed ASCONF chunks that we reply with
    ASCONF_ACK chunks are cached per serial. Thus, when we receive a
    same ASCONF chunk twice (e.g. through a lost ASCONF_ACK), we do
    not need to process them again on the server side (that was the
    idea, also proposed in the RFC). Instead, we know it was cached
    and we just resend the cached chunk instead. So far, so good.
    
    Where things get nasty is in SCTP's side effect interpreter, that
    is, sctp_cmd_interpreter():
    
    While incoming ASCONF_a (chunk = event_arg) is being marked
    !end_of_packet and !singleton, and we have an association context,
    we do not flush the outqueue the first time after processing the
    ASCONF_ACK singleton chunk via SCTP_CMD_REPLY. Instead, we keep it
    queued up, although we set local_cork to 1. Commit 2e3216cd54b1
    changed the precedence, so that as long as we get bundled, incoming
    chunks we try possible bundling on outgoing queue as well. Before
    this commit, we would just flush the output queue.
    
    Now, while ASCONF_a's ASCONF_ACK sits in the corked outq, we
    continue to process the same ASCONF_b chunk from the packet. As
    we have cached the previous ASCONF_ACK, we find it, grab it and
    do another SCTP_CMD_REPLY command on it. So, effectively, we rip
    the chunk->list pointers and requeue the same ASCONF_ACK chunk
    another time. Since we process ASCONF_b, it's correctly marked
    with end_of_packet and we enforce an uncork, and thus flush, thus
    crashing the kernel.
    
    Fix it by testing if the ASCONF_ACK is currently pending and if
    that is the case, do not requeue it. When flushing the output
    queue we may relink the chunk for preparing an outgoing packet,
    but eventually unlink it when it's copied into the skb right
    before transmission.
    
    Joint work with Vlad Yasevich.
    
    Fixes: 2e3216cd54b1 ("sctp: Follow security requirement of responding with 1 packet")
    Signed-off-by: Daniel Borkmann <dborkman@redhat.com>
    Signed-off-by: Vlad Yasevich <vyasevich@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 203ce0b2fb0cd248adfe49aa757527583aeab327
Author: Linus Torvalds <torvalds@linux-foundation.org>
Date:   Thu Jan 29 11:15:17 2015 -0800

    vm: make stack guard page errors return VM_FAULT_SIGSEGV rather than SIGBUS
    
    commit 9c145c56d0c8a0b62e48c8d71e055ad0fb2012ba upstream.
    
    The stack guard page error case has long incorrectly caused a SIGBUS
    rather than a SIGSEGV, but nobody actually noticed until commit
    fee7e49d4514 ("mm: propagate error from stack expansion even for guard
    page") because that error case was never actually triggered in any
    normal situations.
    
    Now that we actually report the error, people noticed the wrong signal
    that resulted.  So far, only the test suite of libsigsegv seems to have
    actually cared, but there are real applications that use libsigsegv, so
    let's not wait for any of those to break.
    
    Reported-and-tested-by: Takashi Iwai <tiwai@suse.de>
    Tested-by: Jan Engelhardt <jengelh@inai.de>
    Acked-by: Heiko Carstens <heiko.carstens@de.ibm.com> # "s390 still compiles and boots"
    Cc: linux-arch@vger.kernel.org
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit a10ca0dbc2bcf3383fa42dcfeca055f7b5fe1106
Author: Linus Torvalds <torvalds@linux-foundation.org>
Date:   Thu Jan 29 10:51:32 2015 -0800

    vm: add VM_FAULT_SIGSEGV handling support
    
    commit 33692f27597fcab536d7cbbcc8f52905133e4aa7 upstream.
    
    The core VM already knows about VM_FAULT_SIGBUS, but cannot return a
    "you should SIGSEGV" error, because the SIGSEGV case was generally
    handled by the caller - usually the architecture fault handler.
    
    That results in lots of duplication - all the architecture fault
    handlers end up doing very similar "look up vma, check permissions, do
    retries etc" - but it generally works.  However, there are cases where
    the VM actually wants to SIGSEGV, and applications _expect_ SIGSEGV.
    
    In particular, when accessing the stack guard page, libsigsegv expects a
    SIGSEGV.  And it usually got one, because the stack growth is handled by
    that duplicated architecture fault handler.
    
    However, when the generic VM layer started propagating the error return
    from the stack expansion in commit fee7e49d4514 ("mm: propagate error
    from stack expansion even for guard page"), that now exposed the
    existing VM_FAULT_SIGBUS result to user space.  And user space really
    expected SIGSEGV, not SIGBUS.
    
    To fix that case, we need to add a VM_FAULT_SIGSEGV, and teach all those
    duplicate architecture fault handlers about it.  They all already have
    the code to handle SIGSEGV, so it's about just tying that new return
    value to the existing code, but it's all a bit annoying.
    
    This is the mindless minimal patch to do this.  A more extensive patch
    would be to try to gather up the mostly shared fault handling logic into
    one generic helper routine, and long-term we really should do that
    cleanup.
    
    Just from this patch, you can generally see that most architectures just
    copied (directly or indirectly) the old x86 way of doing things, but in
    the meantime that original x86 model has been improved to hold the VM
    semaphore for shorter times etc and to handle VM_FAULT_RETRY and other
    "newer" things, so it would be a good idea to bring all those
    improvements to the generic case and teach other architectures about
    them too.
    
    Reported-and-tested-by: Takashi Iwai <tiwai@suse.de>
    Tested-by: Jan Engelhardt <jengelh@inai.de>
    Acked-by: Heiko Carstens <heiko.carstens@de.ibm.com> # "s390 still compiles and boots"
    Cc: linux-arch@vger.kernel.org
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    [bwh: Backported to 3.2:
     - Adjust filenames, context
     - Drop arc, metag, nios2 and lustre changes
     - For sh, patch both 32-bit and 64-bit implementations to use goto bad_area
     - For s390, pass int_code and trans_exc_code as arguments to do_no_context()
       and do_sigsegv()]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
    [lizf: Backported to 3.4:
     - adjust context in arch/power/mm/fault.c
     - apply the original change in upstream commit for s390]
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 6c7738f3aca22188f304ec78f853a4b82ba9a679
Author: Hannes Frederic Sowa <hannes@stressinduktion.org>
Date:   Mon Jan 26 15:11:17 2015 +0100

    ipv6: replacing a rt6_info needs to purge possible propagated rt6_infos too
    
    commit 6e9e16e6143b725662e47026a1d0f270721cdd24 upstream.
    
    Lubomir Rintel reported that during replacing a route the interface
    reference counter isn't correctly decremented.
    
    To quote bug <https://bugzilla.kernel.org/show_bug.cgi?id=91941>:
    | [root@rhel7-5 lkundrak]# sh -x lal
    | + ip link add dev0 type dummy
    | + ip link set dev0 up
    | + ip link add dev1 type dummy
    | + ip link set dev1 up
    | + ip addr add 2001:db8:8086::2/64 dev dev0
    | + ip route add 2001:db8:8086::/48 dev dev0 proto static metric 20
    | + ip route add 2001:db8:8088::/48 dev dev1 proto static metric 10
    | + ip route replace 2001:db8:8086::/48 dev dev1 proto static metric 20
    | + ip link del dev0 type dummy
    | Message from syslogd@rhel7-5 at Jan 23 10:54:41 ...
    |  kernel:unregister_netdevice: waiting for dev0 to become free. Usage count = 2
    |
    | Message from syslogd@rhel7-5 at Jan 23 10:54:51 ...
    |  kernel:unregister_netdevice: waiting for dev0 to become free. Usage count = 2
    
    During replacement of a rt6_info we must walk all parent nodes and check
    if the to be replaced rt6_info got propagated. If so, replace it with
    an alive one.
    
    Fixes: 4a287eba2de3957 ("IPv6 routing, NLM_F_* flag support: REPLACE and EXCL flags support, warn about missing CREATE flag")
    Reported-by: Lubomir Rintel <lkundrak@v3.sk>
    Signed-off-by: Hannes Frederic Sowa <hannes@stressinduktion.org>
    Tested-by: Lubomir Rintel <lkundrak@v3.sk>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 0565f4368ff26e2574c979e911763d6387db45cc
Author: Daniel Borkmann <dborkman@redhat.com>
Date:   Thu Jan 22 18:26:54 2015 +0100

    net: sctp: fix slab corruption from use after free on INIT collisions
    
    commit 600ddd6825543962fb807884169e57b580dba208 upstream.
    
    When hitting an INIT collision case during the 4WHS with AUTH enabled, as
    already described in detail in commit 1be9a950c646 ("net: sctp: inherit
    auth_capable on INIT collisions"), it can happen that we occasionally
    still remotely trigger the following panic on server side which seems to
    have been uncovered after the fix from commit 1be9a950c646 ...
    
    [  533.876389] BUG: unable to handle kernel paging request at 00000000ffffffff
    [  533.913657] IP: [<ffffffff811ac385>] __kmalloc+0x95/0x230
    [  533.940559] PGD 5030f2067 PUD 0
    [  533.957104] Oops: 0000 [#1] SMP
    [  533.974283] Modules linked in: sctp mlx4_en [...]
    [  534.939704] Call Trace:
    [  534.951833]  [<ffffffff81294e30>] ? crypto_init_shash_ops+0x60/0xf0
    [  534.984213]  [<ffffffff81294e30>] crypto_init_shash_ops+0x60/0xf0
    [  535.015025]  [<ffffffff8128c8ed>] __crypto_alloc_tfm+0x6d/0x170
    [  535.045661]  [<ffffffff8128d12c>] crypto_alloc_base+0x4c/0xb0
    [  535.074593]  [<ffffffff8160bd42>] ? _raw_spin_lock_bh+0x12/0x50
    [  535.105239]  [<ffffffffa0418c11>] sctp_inet_listen+0x161/0x1e0 [sctp]
    [  535.138606]  [<ffffffff814e43bd>] SyS_listen+0x9d/0xb0
    [  535.166848]  [<ffffffff816149a9>] system_call_fastpath+0x16/0x1b
    
    ... or depending on the the application, for example this one:
    
    [ 1370.026490] BUG: unable to handle kernel paging request at 00000000ffffffff
    [ 1370.026506] IP: [<ffffffff811ab455>] kmem_cache_alloc+0x75/0x1d0
    [ 1370.054568] PGD 633c94067 PUD 0
    [ 1370.070446] Oops: 0000 [#1] SMP
    [ 1370.085010] Modules linked in: sctp kvm_amd kvm [...]
    [ 1370.963431] Call Trace:
    [ 1370.974632]  [<ffffffff8120f7cf>] ? SyS_epoll_ctl+0x53f/0x960
    [ 1371.000863]  [<ffffffff8120f7cf>] SyS_epoll_ctl+0x53f/0x960
    [ 1371.027154]  [<ffffffff812100d3>] ? anon_inode_getfile+0xd3/0x170
    [ 1371.054679]  [<ffffffff811e3d67>] ? __alloc_fd+0xa7/0x130
    [ 1371.080183]  [<ffffffff816149a9>] system_call_fastpath+0x16/0x1b
    
    With slab debugging enabled, we can see that the poison has been overwritten:
    
    [  669.826368] BUG kmalloc-128 (Tainted: G        W     ): Poison overwritten
    [  669.826385] INFO: 0xffff880228b32e50-0xffff880228b32e50. First byte 0x6a instead of 0x6b
    [  669.826414] INFO: Allocated in sctp_auth_create_key+0x23/0x50 [sctp] age=3 cpu=0 pid=18494
    [  669.826424]  __slab_alloc+0x4bf/0x566
    [  669.826433]  __kmalloc+0x280/0x310
    [  669.826453]  sctp_auth_create_key+0x23/0x50 [sctp]
    [  669.826471]  sctp_auth_asoc_create_secret+0xcb/0x1e0 [sctp]
    [  669.826488]  sctp_auth_asoc_init_active_key+0x68/0xa0 [sctp]
    [  669.826505]  sctp_do_sm+0x29d/0x17c0 [sctp] [...]
    [  669.826629] INFO: Freed in kzfree+0x31/0x40 age=1 cpu=0 pid=18494
    [  669.826635]  __slab_free+0x39/0x2a8
    [  669.826643]  kfree+0x1d6/0x230
    [  669.826650]  kzfree+0x31/0x40
    [  669.826666]  sctp_auth_key_put+0x19/0x20 [sctp]
    [  669.826681]  sctp_assoc_update+0x1ee/0x2d0 [sctp]
    [  669.826695]  sctp_do_sm+0x674/0x17c0 [sctp]
    
    Since this only triggers in some collision-cases with AUTH, the problem at
    heart is that sctp_auth_key_put() on asoc->asoc_shared_key is called twice
    when having refcnt 1, once directly in sctp_assoc_update() and yet again
    from within sctp_auth_asoc_init_active_key() via sctp_assoc_update() on
    the already kzfree'd memory, which is also consistent with the observation
    of the poison decrease from 0x6b to 0x6a (note: the overwrite is detected
    at a later point in time when poison is checked on new allocation).
    
    Reference counting of auth keys revisited:
    
    Shared keys for AUTH chunks are being stored in endpoints and associations
    in endpoint_shared_keys list. On endpoint creation, a null key is being
    added; on association creation, all endpoint shared keys are being cached
    and thus cloned over to the association. struct sctp_shared_key only holds
    a pointer to the actual key bytes, that is, struct sctp_auth_bytes which
    keeps track of users internally through refcounting. Naturally, on assoc
    or enpoint destruction, sctp_shared_key are being destroyed directly and
    the reference on sctp_auth_bytes dropped.
    
    User space can add keys to either list via setsockopt(2) through struct
    sctp_authkey and by passing that to sctp_auth_set_key() which replaces or
    adds a new auth key. There, sctp_auth_create_key() creates a new sctp_auth_bytes
    with refcount 1 and in case of replacement drops the reference on the old
    sctp_auth_bytes. A key can be set active from user space through setsockopt()
    on the id via sctp_auth_set_active_key(), which iterates through either
    endpoint_shared_keys and in case of an assoc, invokes (one of various places)
    sctp_auth_asoc_init_active_key().
    
    sctp_auth_asoc_init_active_key() computes the actual secret from local's
    and peer's random, hmac and shared key parameters and returns a new key
    directly as sctp_auth_bytes, that is asoc->asoc_shared_key, plus drops
    the reference if there was a previous one. The secret, which where we
    eventually double drop the ref comes from sctp_auth_asoc_set_secret() with
    intitial refcount of 1, which also stays unchanged eventually in
    sctp_assoc_update(). This key is later being used for crypto layer to
    set the key for the hash in crypto_hash_setkey() from sctp_auth_calculate_hmac().
    
    To close the loop: asoc->asoc_shared_key is freshly allocated secret
    material and independant of the sctp_shared_key management keeping track
    of only shared keys in endpoints and assocs. Hence, also commit 4184b2a79a76
    ("net: sctp: fix memory leak in auth key management") is independant of
    this bug here since it concerns a different layer (though same structures
    being used eventually). asoc->asoc_shared_key is reference dropped correctly
    on assoc destruction in sctp_association_free() and when active keys are
    being replaced in sctp_auth_asoc_init_active_key(), it always has a refcount
    of 1. Hence, it's freed prematurely in sctp_assoc_update(). Simple fix is
    to remove that sctp_auth_key_put() from there which fixes these panics.
    
    Fixes: 730fc3d05cd4 ("[SCTP]: Implete SCTP-AUTH parameter processing")
    Signed-off-by: Daniel Borkmann <dborkman@redhat.com>
    Acked-by: Vlad Yasevich <vyasevich@gmail.com>
    Acked-by: Neil Horman <nhorman@tuxdriver.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 612dcf53179f78a14fce5b4d5b397fa21f23c241
Author: Clemens Ladisch <clemens@ladisch.de>
Date:   Sun Jan 25 14:34:29 2015 +0100

    ALSA: seq-dummy: remove deadlock-causing events on close
    
    commit 0767e95bb96d7fdddcd590fb809e6975d93aebc5 upstream.
    
    When the last subscriber to a "Through" port has been removed, the
    subscribed destination ports might still be active, so it would be
    wrong to send "all sounds off" and "reset controller" events to them.
    The proper place for such a shutdown would be the closing of the actual
    MIDI port (and close_substream() in rawmidi.c already can do this).
    
    This also fixes a deadlock when dummy_unuse() tries to send events to
    its own port that is already locked because it is being freed.
    
    Reported-by: Peter Billam <peter@www.pjb.com.au>
    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 0f1de5af9774eb62a69921e86139bc52d90c4683
Author: Bob Paauwe <bob.j.paauwe@intel.com>
Date:   Thu Dec 18 09:51:26 2014 -0800

    drm/i915: Only fence tiled region of object.
    
    commit af1a7301c7cf8912dca03065d448c4437c5c239f upstream.
    
    When creating a fence for a tiled object, only fence the area that
    makes up the actual tiles.  The object may be larger than the tiled
    area and if we allow those extra addresses to be fenced, they'll
    get converted to addresses beyond where the object is mapped. This
    opens up the possiblity of writes beyond the end of object.
    
    To prevent this, we adjust the size of the fence to only encompass
    the area that makes up the actual tiles.  The extra space is considered
    un-tiled and now behaves as if it was a linear object.
    
    Testcase: igt/gem_tiled_fence_overflow
    Reported-by: Dan Hettena <danh@ghs.com>
    Signed-off-by: Bob Paauwe <bob.j.paauwe@intel.com>
    Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
    Signed-off-by: Jani Nikula <jani.nikula@intel.com>
    [lizf: Backported to 3.4:
     - adjust context
     - adjust indentation
     - make the same change to both sandybridge_write_fence_reg()
       and i965_write_fence_reg()]
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 97fa724b23c3dd22e9c0979ad0e9d260cc6d545d
Author: Macpaul Lin <macpaul@gmail.com>
Date:   Fri Jan 23 14:39:02 2015 +0800

    USB: Add OTG PET device to TPL
    
    commit e5dff0e80463cc3fa236e898ef1491b40be70b19 upstream.
    
    OTG device shall support this device for allowing compliance automated testing.
    The modification is derived from Pavankumar and Vijayavardhans' previous work.
    
    Signed-off-by: Macpaul Lin <macpaul@gmail.com>
    Cc: Pavankumar Kondeti <pkondeti@codeaurora.org>
    Cc: Vijayavardhan Vennapusa <vvreddy@codeaurora.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 7583c9fa5344a6cc217be4f6ded892648ff0e3f5
Author: James P Michels III <james.p.michels@gmail.com>
Date:   Sun Jul 27 13:28:04 2014 -0400

    usb-core bInterval quirk
    
    commit cd83ce9e6195aa3ea15ab4db92892802c20df5d0 upstream.
    
    This patch adds a usb quirk to support devices with interupt endpoints
    and bInterval values expressed as microframes. The quirk causes the
    parse endpoint function to modify the reported bInterval to a standards
    conforming value.
    
    There is currently code in the endpoint parser that checks for
    bIntervals that are outside of the valid range (1-16 for USB 2+ high
    speed and super speed interupt endpoints). In this case, the code assumes
    the bInterval is being reported in 1ms frames. As well, the correction
    is only applied if the original bInterval value is out of the 1-16 range.
    
    With this quirk applied to the device, the bInterval will be
    accurately adjusted from microframes to an exponent.
    
    Signed-off-by: James P Michels III <james.p.michels@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit d6d1536d901f5805565af5dd38d2d0ae766ee875
Author: Dmitry Nezhevenko <dion@dion.org.ua>
Date:   Mon Jan 12 19:13:01 2015 +0200

    usb-storage/SCSI: blacklist FUA on JMicron 152d:2566 USB-SATA controller
    
    commit bf5c4136fa5ce471bdbf4cf59a813e32755fd014 upstream.
    
    It looks like FUA support is broken on JMicron 152d:2566 bridge:
    
    [223159.885704] sd 7:0:0:0: [sdc] Write Protect is off
    [223159.885706] sd 7:0:0:0: [sdc] Mode Sense: 47 00 10 08
    [223159.885942] sd 7:0:0:0: [sdc] Write cache: enabled, read cache: enabled, supports DPO and FUA
    
    [223283.691677] sd 7:0:0:0: [sdc]
    [223283.691680] Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
    [223283.691681] sd 7:0:0:0: [sdc]
    [223283.691682] Sense Key : Illegal Request [current]
    [223283.691684] sd 7:0:0:0: [sdc]
    [223283.691685] Add. Sense: Invalid field in cdb
    [223283.691686] sd 7:0:0:0: [sdc] CDB:
    [223283.691687] Write(10): 2a 08 15 d0 83 0d 00 00 01 00
    [223283.691690] blk_update_request: critical target error, dev sdc, sector 2927892584
    
    This patch adds blacklist flag so that sd will not use FUA
    
    Signed-off-by: Dmitry Nezhevenko <dion@dion.org.ua>
    Cc: Phil Dibowitz <phil@ipom.com>
    Cc: Alan Stern <stern@rowland.harvard.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit ef978a9da7dcda0f159a9ddf9136be389333cf17
Author: Alan Stern <stern@rowland.harvard.edu>
Date:   Mon Jun 30 11:04:21 2014 -0400

    usb-storage/SCSI: Add broken_fua blacklist flag
    
    commit b14bf2d0c0358140041d1c1805a674376964d0e0 upstream.
    
    Some buggy JMicron USB-ATA bridges don't know how to translate the FUA
    bit in READs or WRITEs.  This patch adds an entry in unusual_devs.h
    and a blacklist flag to tell the sd driver not to use FUA.
    
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    Reported-by: Michael Büsch <m@bues.ch>
    Tested-by: Michael Büsch <m@bues.ch>
    Acked-by: James Bottomley <James.Bottomley@HansenPartnership.com>
    CC: Matthew Dharm <mdharm-usb@one-eyed-alien.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 89f1d011748d70b830f452bba6e7e83666123e90
Author: Johannes Berg <johannes.berg@intel.com>
Date:   Fri Jan 23 11:10:12 2015 +0100

    nl80211: fix per-station group key get/del and memory leak
    
    commit 0fa7b39131576dd1baa6ca17fca53c65d7f62249 upstream.
    
    In case userspace attempts to obtain key information for or delete a
    unicast key, this is currently erroneously rejected unless the driver
    sets the WIPHY_FLAG_IBSS_RSN flag. Apparently enough drivers do so it
    was never noticed.
    
    Fix that, and while at it fix a potential memory leak: the error path
    in the get_key() function was placed after allocating a message but
    didn't free it - move it to a better place. Luckily admin permissions
    are needed to call this operation.
    
    Fixes: e31b82136d1ad ("cfg80211/mac80211: allow per-station GTKs")
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    [lizf: Backported to 3.4: adjust context]
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit f720cca4700e3ebb8fc69a75b17e83bad01de34d
Author: Laurent Dufour <ldufour@linux.vnet.ibm.com>
Date:   Thu Jan 15 18:23:47 2015 +0100

    powerpc/xmon: Fix another endiannes issue in RTAS call from xmon
    
    commit e6eb2eba494d6f99e69ca3c3748cd37a2544ab38 upstream.
    
    The commit 3b8a3c010969 ("powerpc/pseries: Fix endiannes issue in RTAS
    call from xmon") was fixing an endianness issue in the call made from
    xmon to RTAS.
    
    However, as Michael Ellerman noticed, this fix was not complete, the
    token value was not byte swapped. This lead to call an unexpected and
    most of the time unexisting RTAS function, which is silently ignored by
    RTAS.
    
    This fix addresses this hole.
    
    Reported-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Laurent Dufour <ldufour@linux.vnet.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 8f108b362bb02742f8bfac6961c4521c4dd807bd
Author: Ashay Jaiswal <ashayj@codeaurora.org>
Date:   Thu Jan 8 18:54:25 2015 +0530

    regulator: core: fix race condition in regulator_put()
    
    commit 83b0302d347a49f951e904184afe57ac3723476e upstream.
    
    The regulator framework maintains a list of consumer regulators
    for a regulator device and protects it from concurrent access using
    the regulator device's mutex lock.
    
    In the case of regulator_put() the consumer is removed and regulator
    device's parameters are updated without holding the regulator device's
    mutex. This would lead to a race condition between the regulator_put()
    and any function which traverses the consumer list or modifies regulator
    device's parameters.
    Fix this race condition by holding the regulator device's mutex in case
    of regulator_put.
    
    Signed-off-by: Ashay Jaiswal <ashayj@codeaurora.org>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    [lizf: Backported to 3.4:
     - adjust context
     - no need to change the comment]
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 7845365e31c3ab56555f02a5b9a9850039b8d1d0
Author: Zidan Wang <b50113@freescale.com>
Date:   Wed Dec 31 11:39:14 2014 +0800

    ASoC: wm8960: Fix capture sample rate from 11250 to 11025
    
    commit 22ee76daddb87f88d2336d1b4737ef27c4f307ac upstream.
    
    wm8960 codec can't support sample rate 11250, it must be 11025.
    
    Signed-off-by: Zidan Wang <b50113@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 f137e937cb7a5495b658fb904a16fe2cecdf6376
Author: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Date:   Fri Jan 2 17:48:51 2015 +0200

    spi: dw-mid: fix FIFO size
    
    commit 67bf9cda4b498b8cea4a40be67a470afe57d2e88 upstream.
    
    The FIFO size is 40 accordingly to the specifications, but this means 0x40,
    i.e. 64 bytes. This patch fixes the typo and enables FIFO size autodetection
    for Intel MID devices.
    
    Fixes: 7063c0d942a1 (spi/dw_spi: add DMA support)
    Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 322c22aadcd3c620d92d7032edfa6528a00d393a
Author: Axel Lin <axel.lin@ingics.com>
Date:   Mon Jan 5 09:32:56 2015 +0800

    spi: dw: Fix detecting FIFO depth
    
    commit d297933cc7fcfbaaf2d37570baac73287bf0357d upstream.
    
    Current code tries to find the highest valid fifo depth by checking the value
    it wrote to DW_SPI_TXFLTR. There are a few problems in current code:
    1) There is an off-by-one in dws->fifo_len setting because it assumes the latest
       register write fails so the latest valid value should be fifo - 1.
    2) We know the depth could be from 2 to 256 from HW spec, so it is not necessary
       to test fifo == 257. In the case fifo is 257, it means the latest valid
       setting is fifo = 256. So after the for loop iteration, we should check
       fifo == 2 case instead of fifo == 257 if detecting the FIFO depth fails.
    This patch fixes above issues.
    
    Signed-off-by: Axel Lin <axel.lin@ingics.com>
    Reviewed-and-tested-by: Andy Shevchenko <andriy.shevchenko@linux.intel.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 b447eaa7d22db0fee573a6f859fba2cdfbb6d92d
Author: K. Y. Srinivasan <kys@microsoft.com>
Date:   Mon Jan 12 16:26:02 2015 -0800

    x86, hyperv: Mark the Hyper-V clocksource as being continuous
    
    commit 32c6590d126836a062b3140ed52d898507987017 upstream.
    
    The Hyper-V clocksource is continuous; mark it accordingly.
    
    Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
    Acked-by: jasowang@redhat.com
    Cc: gregkh@linuxfoundation.org
    Cc: devel@linuxdriverproject.org
    Cc: olaf@aepfle.de
    Cc: apw@canonical.com
    Link: http://lkml.kernel.org/r/1421108762-3331-1-git-send-email-kys@microsoft.com
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit dc3aaeefea432f81d77abee575f5989f1858faac
Author: David Jeffery <djeffery@redhat.com>
Date:   Mon Jan 19 13:03:25 2015 -0600

    libata: prevent HSM state change race between ISR and PIO
    
    commit ce7514526742c0898b837d4395f515b79dfb5a12 upstream.
    
    It is possible for ata_sff_flush_pio_task() to set ap->hsm_task_state to
    HSM_ST_IDLE in between the time __ata_sff_port_intr() checks for HSM_ST_IDLE
    and before it calls ata_sff_hsm_move() causing ata_sff_hsm_move() to BUG().
    
    This problem is hard to reproduce making this patch hard to verify, but this
    fix will prevent the race.
    
    I have not been able to reproduce the problem, but here is a crash dump from
    a 2.6.32 kernel.
    
    On examining the ata port's state, its hsm_task_state field has a value of HSM_ST_IDLE:
    
    crash> struct ata_port.hsm_task_state ffff881c1121c000
      hsm_task_state = 0
    
    Normally, this should not be possible as ata_sff_hsm_move() was called from ata_sff_host_intr(),
    which checks hsm_task_state and won't call ata_sff_hsm_move() if it has a HSM_ST_IDLE value.
    
    PID: 11053  TASK: ffff8816e846cae0  CPU: 0   COMMAND: "sshd"
     #0 [ffff88008ba03960] machine_kexec at ffffffff81038f3b
     #1 [ffff88008ba039c0] crash_kexec at ffffffff810c5d92
     #2 [ffff88008ba03a90] oops_end at ffffffff8152b510
     #3 [ffff88008ba03ac0] die at ffffffff81010e0b
     #4 [ffff88008ba03af0] do_trap at ffffffff8152ad74
     #5 [ffff88008ba03b50] do_invalid_op at ffffffff8100cf95
     #6 [ffff88008ba03bf0] invalid_op at ffffffff8100bf9b
        [exception RIP: ata_sff_hsm_move+317]
        RIP: ffffffff813a77ad  RSP: ffff88008ba03ca0  RFLAGS: 00010097
        RAX: 0000000000000000  RBX: ffff881c1121dc60  RCX: 0000000000000000
        RDX: ffff881c1121dd10  RSI: ffff881c1121dc60  RDI: ffff881c1121c000
        RBP: ffff88008ba03d00   R8: 0000000000000000   R9: 000000000000002e
        R10: 000000000001003f  R11: 000000000000009b  R12: ffff881c1121c000
        R13: 0000000000000000  R14: 0000000000000050  R15: ffff881c1121dd78
        ORIG_RAX: ffffffffffffffff  CS: 0010  SS: 0018
     #7 [ffff88008ba03d08] ata_sff_host_intr at ffffffff813a7fbd
     #8 [ffff88008ba03d38] ata_sff_interrupt at ffffffff813a821e
     #9 [ffff88008ba03d78] handle_IRQ_event at ffffffff810e6ec0

commit 81bd39b0830d17c213a21afa50849af8644974c8
Author: Michael Karcher <kernel@mkarcher.dialup.fu-berlin.de>
Date:   Sun Jan 18 00:36:15 2015 +0100

    scripts/recordmcount.pl: There is no -m32 gcc option on Super-H anymore
    
    commit 1caf6aaaa47471831d77c75f094d4e00ad1ec808 upstream.
    
    Compiling SH with gcc-4.8 fails due to the -m32 option not being
    supported.
    
    From http://buildd.debian-ports.org/status/fetch.php?pkg=linux&arch=sh4&ver=3.16.7-ckt4-1&stamp=1421425783
    
          CC      init/main.o
        gcc-4.8: error: unrecognized command line option '-m32'
        ld: cannot find init/.tmp_mc_main.o: No such file or directory
        objcopy: 'init/.tmp_mx_main.o': No such file
        rm: cannot remove 'init/.tmp_mx_main.o': No such file or directory
        rm: cannot remove 'init/.tmp_mc_main.o': No such file or directory
    
    Link: http://lkml.kernel.org/r/1421537778-29001-1-git-send-email-kernel@mkarcher.dialup.fu-berlin.de
    Link: http://lkml.kernel.org/r/54BCBDD4.10102@physik.fu-berlin.de
    
    Cc: Matt Fleming <matt@console-pimps.org>
    Reported-by: John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>
    Signed-off-by: Michael Karcher <kernel@mkarcher.dialup.fu-berlin.de>
    Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 1e9ecb92905ef940531b8aa70395f532742e7099
Author: Dan Williams <dan.j.williams@intel.com>
Date:   Fri Jan 16 15:13:02 2015 -0800

    libata: allow sata_sil24 to opt-out of tag ordered submission
    
    commit 72dd299d5039a336493993dcc63413cf31d0e662 upstream.
    
    Ronny reports: https://bugzilla.kernel.org/show_bug.cgi?id=87101
        "Since commit 8a4aeec8d "libata/ahci: accommodate tag ordered
        controllers" the access to the harddisk on the first SATA-port is
        failing on its first access. The access to the harddisk on the
        second port is working normal.
    
        When reverting the above commit, access to both harddisks is working
        fine again."
    
    Maintain tag ordered submission as the default, but allow sata_sil24 to
    continue with the old behavior.
    
    Cc: Tejun Heo <tj@kernel.org>
    Reported-by: Ronny Hegewald <Ronny.Hegewald@online.de>
    Signed-off-by: Dan Williams <dan.j.williams@intel.com>
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit a6887b405068526f98c1a1f6c0368f32308712d0
Author: Jason Lee Cragg <jcragg@gmail.com>
Date:   Sat Jan 17 12:28:29 2015 -0500

    ALSA: usb-audio: Add mic volume fix quirk for Logitech Webcam C210
    
    commit 6455931186bff407493135e74c5f32efd30860e2 upstream.
    
    Signed-off-by: Jason Lee Cragg <jcragg@gmail.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit d77c3bbf70dd9734b2031475813cd03932b7e6ed
Author: Johan Hovold <johan@kernel.org>
Date:   Tue Jan 13 13:00:06 2015 +0100

    gpio: sysfs: fix gpio attribute-creation race
    
    commit ebbeba120ab2ec6ac5f3afc1425ec6ff0b77ad6f upstream.
    
    Fix attribute-creation race with userspace by using the default group
    to create also the contingent gpio device attributes.
    
    Fixes: d8f388d8dc8d ("gpio: sysfs interface")
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    [lizf:
     - adjust filename
     - call gpio_to_irq() instead of gpiod_to_irq]
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit d08ee685d847a7f51ad271b089bbf9b2ee750c5c
Author: Johan Hovold <johan@kernel.org>
Date:   Tue Jan 13 13:00:05 2015 +0100

    gpio: sysfs: fix gpio device-attribute leak
    
    commit 0915e6feb38de8d3601819992a5bd050201a56fa upstream.
    
    The gpio device attributes were never destroyed when the gpio was
    unexported (or on export failures).
    
    Use device_create_with_groups() to create the default device attributes
    of the gpio class device. Note that this also fixes the
    attribute-creation race with userspace for these attributes.
    
    Remove contingent attributes in export error path and on unexport.
    
    Fixes: d8f388d8dc8d ("gpio: sysfs interface")
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    [lizf: Backported to 3.4:
     - adjust filename
     - adjust context]
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 5e4c2b6bfdc7d2aa17efad3123ef894543981a59
Author: Ryan Mallon <rmallon@gmail.com>
Date:   Mon Oct 22 11:39:12 2012 +1100

    gpiolib: Refactor gpio_export
    
    commit fc4e2514995d9cd7f3e1a67098ce65d72acf8ec7 upstream.
    
    The gpio_export function uses nested if statements and the status
    variable to handle the failure cases. This makes the function logic
    difficult to follow. Refactor the code to abort immediately on failure
    using goto. This makes the code slightly longer, but significantly
    reduces the nesting and number of split lines and makes the code easier
    to read.
    
    Signed-off-by: Ryan Mallon <rmallon@gmail.com>
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 9ce6394047ddd16cd762c231506f812c82e3168d
Author: Johan Hovold <johan@kernel.org>
Date:   Tue Jan 13 13:00:04 2015 +0100

    gpio: sysfs: fix gpio-chip device-attribute leak
    
    commit 121b6a79955a3a3fd7bbb9b8cb88d5b9dad6283d upstream.
    
    The gpio-chip device attributes were never destroyed when the device was
    removed.
    
    Fix by using device_create_with_groups() to create the device attributes
    of the chip class device.
    
    Note that this also fixes the attribute-creation race with userspace.
    
    Fixes: d8f388d8dc8d ("gpio: sysfs interface")
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    [lizf: Backported to 3.4: adjust filename]
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 4ef74f7a57f95fa31db9d415c5dee165e7c4875c
Author: Guenter Roeck <linux@roeck-us.net>
Date:   Sun Jul 14 16:05:57 2013 -0700

    driver core: Introduce device_create_groups
    
    commit 39ef311204941ddd01ea2950d6220c8ccc710d15 upstream.
    
    device_create_groups lets callers create devices as well as associated
    sysfs attributes with a single call. This avoids race conditions seen
    if sysfs attributes on new devices are created later.
    
    [fixed up comment block placement and add checks for printk buffer
    formats - gregkh]
    
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Cc: Jean Delvare <khali@linux-fr.org>
    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 aa12b754cfbd5b5c900d43a6a215b096d8afc0ee
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Sun Jul 14 16:05:52 2013 -0700

    sysfs.h: add ATTRIBUTE_GROUPS() macro
    
    commit f2f37f58b1b933b06d6d84e80a31a1b500fb0db2 upstream.
    
    To make it easier for driver subsystems to work with attribute groups,
    create the ATTRIBUTE_GROUPS macro to remove some of the repetitive
    typing for the most common use for attribute groups.
    
    Reviewed-by: Guenter Roeck <linux@roeck-us.net>
    Tested-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 5b724689fa7063c323b0dd74e78c51617349cd5f
Author: Oliver Hartkopp <socketcan@hartkopp.net>
Date:   Mon Jan 5 18:40:15 2015 +0100

    can: dev: fix crtlmode_supported check
    
    commit 9b1087aa5e86448fe6ad40a58964e35f3ba423d5 upstream.
    
    When changing flags in the CAN drivers ctrlmode the provided new content has to
    be checked whether the bits are allowed to be changed. The bits that are to be
    changed are given as a bitfield in cm->mask. Therefore checking against
    cm->flags is wrong as the content can hold any kind of values.
    
    The iproute2 tool sets the bits in cm->mask and cm->flags depending on the
    detected command line options. To be robust against bogus user space
    applications additionally sanitize the provided flags with the provided mask.
    
    Cc: Wolfgang Grandegger <wg@grandegger.com>
    Signed-off-by: Oliver Hartkopp <socketcan@hartkopp.net>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    [lizf: Backported to 3.4: adjust context]
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 76b6793a4e94360f8a8bc530ed925461e83dbbe6
Author: Steven Rostedt (Red Hat) <rostedt@goodmis.org>
Date:   Mon Jan 12 12:12:03 2015 -0500

    ftrace/jprobes/x86: Fix conflict between jprobes and function graph tracing
    
    commit 237d28db036e411f22c03cfd5b0f6dc2aa9bf3bc upstream.
    
    If the function graph tracer traces a jprobe callback, the system will
    crash. This can easily be demonstrated by compiling the jprobe
    sample module that is in the kernel tree, loading it and running the
    function graph tracer.
    
     # modprobe jprobe_example.ko
     # echo function_graph > /sys/kernel/debug/tracing/current_tracer
     # ls
    
    The first two commands end up in a nice crash after the first fork.
    (do_fork has a jprobe attached to it, so "ls" just triggers that fork)
    
    The problem is caused by the jprobe_return() that all jprobe callbacks
    must end with. The way jprobes works is that the function a jprobe
    is attached to has a breakpoint placed at the start of it (or it uses
    ftrace if fentry is supported). The breakpoint handler (or ftrace callback)
    will copy the stack frame and change the ip address to return to the
    jprobe handler instead of the function. The jprobe handler must end
    with jprobe_return() which swaps the stack and does an int3 (breakpoint).
    This breakpoint handler will then put back the saved stack frame,
    simulate the instruction at the beginning of the function it added
    a breakpoint to, and then continue on.
    
    For function tracing to work, it hijakes the return address from the
    stack frame, and replaces it with a hook function that will trace
    the end of the call. This hook function will restore the return
    address of the function call.
    
    If the function tracer traces the jprobe handler, the hook function
    for that handler will not be called, and its saved return address
    will be used for the next function. This will result in a kernel crash.
    
    To solve this, pause function tracing before the jprobe handler is called
    and unpause it before it returns back to the function it probed.
    
    Some other updates:
    
    Used a variable "saved_sp" to hold kcb->jprobe_saved_sp. This makes the
    code look a bit cleaner and easier to understand (various tries to fix
    this bug required this change).
    
    Note, if fentry is being used, jprobes will change the ip address before
    the function graph tracer runs and it will not be able to trace the
    function that the jprobe is probing.
    
    Link: http://lkml.kernel.org/r/20150114154329.552437962@goodmis.org
    
    Acked-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
    Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
    [lizf: Backported to 3.4:
     - adjust filename
     - adjust context]
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit e82160b7a761a0c0f2deed04b0a6b68f2308bd27
Author: Amit Virdi <amit.virdi@st.com>
Date:   Tue Jan 13 14:27:21 2015 +0530

    usb: dwc3: gadget: Stop TRB preparation after limit is reached
    
    commit 39e60635a01520e8c8ed3946a28c2b98e6a46f79 upstream.
    
    DWC3 gadget sets up a pool of 32 TRBs for each EP during initialization. This
    means, the max TRBs that can be submitted for an EP is fixed to 32. Since the
    request queue for an EP is a linked list, any number of requests can be queued
    to it by the gadget layer.  However, the dwc3 driver must not submit TRBs more
    than the pool it has created for. This limit wasn't respected when SG was used
    resulting in submitting more than the max TRBs, eventually leading to
    non-transfer of the TRBs submitted over the max limit.
    
    Root cause:
    When SG is used, there are two loops iterating to prepare TRBs:
     - Outer loop over the request_list
     - Inner loop over the SG list
    The code was missing break to get out of the outer loop.
    
    Fixes: eeb720fb21d6 (usb: dwc3: gadget: add support for SG lists)
    Signed-off-by: Amit Virdi <amit.virdi@st.com>
    Signed-off-by: Felipe Balbi <balbi@ti.com>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit a610d5d4fb37171011b1ef9201888276440e0348
Author: Johan Hovold <johan@kernel.org>
Date:   Mon Jan 12 17:12:24 2015 +0100

    gpio: fix memory and reference leaks in gpiochip_add error path
    
    commit 5539b3c938d64a60cb1fc442ac3ce9263d52de0c upstream.
    
    Memory allocated and references taken by of_gpiochip_add and
    acpi_gpiochip_add were never released on errors in gpiochip_add (e.g.
    failure to find free gpio range).
    
    Fixes: 391c970c0dd1 ("of/gpio: add default of_xlate function if device
    has a node pointer")
    Fixes: 664e3e5ac64c ("gpio / ACPI: register to ACPI events
    automatically")
    
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    [lizf: Backported to 3.4:
     - move the call to of_gpiochip_add() into the above if condition.
     - remove the call to acpi_gpiochip_remove()]
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 8463d31289d4c79e739798583bc5862c594c11cb
Author: Konstantin Khlebnikov <koct9i@gmail.com>
Date:   Sun Jan 11 16:54:06 2015 +0300

    mm: fix corner case in anon_vma endless growing prevention
    
    commit b800c91a0517071156e772d4fb329ad33590da62 upstream.
    
    Fix for BUG_ON(anon_vma->degree) splashes in unlink_anon_vmas() ("kernel
    BUG at mm/rmap.c:399!") caused by commit 7a3ef208e662 ("mm: prevent
    endless growth of anon_vma hierarchy")
    
    Anon_vma_clone() is usually called for a copy of source vma in
    destination argument.  If source vma has anon_vma it should be already
    in dst->anon_vma.  NULL in dst->anon_vma is used as a sign that it's
    called from anon_vma_fork().  In this case anon_vma_clone() finds
    anon_vma for reusing.
    
    Vma_adjust() calls it differently and this breaks anon_vma reusing
    logic: anon_vma_clone() links vma to old anon_vma and updates degree
    counters but vma_adjust() overrides vma->anon_vma right after that.  As
    a result final unlink_anon_vmas() decrements degree for wrong anon_vma.
    
    This patch assigns ->anon_vma before calling anon_vma_clone().
    
    Signed-off-by: Konstantin Khlebnikov <koct9i@gmail.com>
    Reported-and-tested-by: Chris Clayton <chris2553@googlemail.com>
    Reported-and-tested-by: Oded Gabbay <oded.gabbay@amd.com>
    Reported-and-tested-by: Chih-Wei Huang <cwhuang@android-x86.org>
    Acked-by: Rik van Riel <riel@redhat.com>
    Acked-by: Vlastimil Babka <vbabka@suse.cz>
    Cc: Daniel Forrest <dan.forrest@ssec.wisc.edu>
    Cc: Michal Hocko <mhocko@suse.cz>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    [lizf: Backported to 3.4: define variable @error and return this instead
     of returning -ENOMEM]
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit df5f1b2e38a0f9d212c073502c4ba95feeeef33b
Author: Linus Torvalds <torvalds@linux-foundation.org>
Date:   Sun Jan 11 11:33:57 2015 -0800

    mm: Don't count the stack guard page towards RLIMIT_STACK
    
    commit 690eac53daff34169a4d74fc7bfbd388c4896abb upstream.
    
    Commit fee7e49d4514 ("mm: propagate error from stack expansion even for
    guard page") made sure that we return the error properly for stack
    growth conditions.  It also theorized that counting the guard page
    towards the stack limit might break something, but also said "Let's see
    if anybody notices".
    
    Somebody did notice.  Apparently android-x86 sets the stack limit very
    close to the limit indeed, and including the guard page in the rlimit
    check causes the android 'zygote' process problems.
    
    So this adds the (fairly trivial) code to make the stack rlimit check be
    against the actual real stack size, rather than the size of the vma that
    includes the guard page.
    
    Reported-and-tested-by: Chih-Wei Huang <cwhuang@android-x86.org>
    Cc: Jay Foad <jay.foad@gmail.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 08424459be58c923f13f23a6ba1e605789eec281
Author: Johan Hovold <johan@kernel.org>
Date:   Mon Jan 5 16:04:13 2015 +0100

    USB: console: fix potential use after free
    
    commit 32a4bf2e81ec378e5925d4e069e0677a6c86a6ad upstream.
    
    Use tty kref to release the fake tty in usb_console_setup to avoid use
    after free if the underlying serial driver has acquired a reference.
    
    Note that using the tty destructor release_one_tty requires some more
    state to be initialised.
    
    Fixes: 4a90f09b20f4 ("tty: usb-serial krefs")
    Signed-off-by: Johan Hovold <johan@kernel.org>
    [lizf: Backported to 3.4: adjust context]
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 5281ada38d4e35233a43edc782431e1210a03f27
Author: Arseny Solokha <asolokha@kb.kras.ru>
Date:   Sat Dec 6 09:54:06 2014 +0700

    OHCI: add a quirk for ULi M5237 blocking on reset
    
    commit 56abcab833fafcfaeb2f5b25e0364c1dec45f53e upstream.
    
    Commit 8dccddbc2368 ("OHCI: final fix for NVIDIA problems (I hope)")
    introduced into 3.1.9 broke boot on e.g. Freescale P2020DS development
    board. The code path that was previously specific to NVIDIA controllers
    had then become taken for all chips.
    
    However, the M5237 installed on the board wedges solid when accessing
    its base+OHCI_FMINTERVAL register, making it impossible to boot any
    kernel newer than 3.1.8 on this particular and apparently other similar
    machines.
    
    Don't readl() and writel() base+OHCI_FMINTERVAL on PCI ID 10b9:5237.
    
    The patch is suitable for the -next tree as well as all maintained
    kernels up to 3.2 inclusive.
    
    Signed-off-by: Arseny Solokha <asolokha@kb.kras.ru>
    Acked-by: Alan Stern <stern@rowland.harvard.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 125943629949d30464bc0d02d4554f4f4938c220
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Fri Jan 9 15:32:31 2015 +0300

    HID: roccat: potential out of bounds in pyra_sysfs_write_settings()
    
    commit 606185b20caf4c57d7e41e5a5ea4aff460aef2ab upstream.
    
    This is a static checker fix.  We write some binary settings to the
    sysfs file.  One of the settings is the "->startup_profile".  There
    isn't any checking to make sure it fits into the
    pyra->profile_settings[] array in the profile_activated() function.
    
    I added a check to pyra_sysfs_write_settings() in both places because
    I wasn't positive that the other callers were correct.
    
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    [lizf: Backported to 3.4: define the variable @settings]
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 7f1be7c6e55b686ee22b97db779eb7ed01a2f3af
Author: Johannes Weiner <hannes@cmpxchg.org>
Date:   Thu Jan 8 14:32:18 2015 -0800

    mm: protect set_page_dirty() from ongoing truncation
    
    commit 2d6d7f98284648c5ed113fe22a132148950b140f upstream.
    
    Tejun, while reviewing the code, spotted the following race condition
    between the dirtying and truncation of a page:
    
    __set_page_dirty_nobuffers()       __delete_from_page_cache()
      if (TestSetPageDirty(page))
                                         page->mapping = NULL
    				     if (PageDirty())
    				       dec_zone_page_state(page, NR_FILE_DIRTY);
    				       dec_bdi_stat(mapping->backing_dev_info, BDI_RECLAIMABLE);
        if (page->mapping)
          account_page_dirtied(page)
            __inc_zone_page_state(page, NR_FILE_DIRTY);
    	__inc_bdi_stat(mapping->backing_dev_info, BDI_RECLAIMABLE);
    
    which results in an imbalance of NR_FILE_DIRTY and BDI_RECLAIMABLE.
    
    Dirtiers usually lock out truncation, either by holding the page lock
    directly, or in case of zap_pte_range(), by pinning the mapcount with
    the page table lock held.  The notable exception to this rule, though,
    is do_wp_page(), for which this race exists.  However, do_wp_page()
    already waits for a locked page to unlock before setting the dirty bit,
    in order to prevent a race where clear_page_dirty() misses the page bit
    in the presence of dirty ptes.  Upgrade that wait to a fully locked
    set_page_dirty() to also cover the situation explained above.
    
    Afterwards, the code in set_page_dirty() dealing with a truncation race
    is no longer needed.  Remove it.
    
    Reported-by: Tejun Heo <tj@kernel.org>
    Signed-off-by: Johannes Weiner <hannes@cmpxchg.org>
    Acked-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
    Reviewed-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    [lizf: Backported to 3.4:
     - adjust context
     - use VM_BUG_ON() instead of VM_BUG_ON_PAGE()]
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 0b4f2ae74a52418cd880d9249e65fc935f02e89a
Author: Konstantin Khlebnikov <koct9i@gmail.com>
Date:   Thu Jan 8 14:32:15 2015 -0800

    mm: prevent endless growth of anon_vma hierarchy
    
    commit 7a3ef208e662f4b63d43a23f61a64a129c525bbc upstream.
    
    Constantly forking task causes unlimited grow of anon_vma chain.  Each
    next child allocates new level of anon_vmas and links vma to all
    previous levels because pages might be inherited from any level.
    
    This patch adds heuristic which decides to reuse existing anon_vma
    instead of forking new one.  It adds counter anon_vma->degree which
    counts linked vmas and directly descending anon_vmas and reuses anon_vma
    if counter is lower than two.  As a result each anon_vma has either vma
    or at least two descending anon_vmas.  In such trees half of nodes are
    leafs with alive vmas, thus count of anon_vmas is no more than two times
    bigger than count of vmas.
    
    This heuristic reuses anon_vmas as few as possible because each reuse
    adds false aliasing among vmas and rmap walker ought to scan more ptes
    when it searches where page is might be mapped.
    
    Link: http://lkml.kernel.org/r/20120816024610.GA5350@evergreen.ssec.wisc.edu
    Fixes: 5beb49305251 ("mm: change anon_vma linking to fix multi-process server scalability issue")
    [akpm@linux-foundation.org: fix typo, per Rik]
    Signed-off-by: Konstantin Khlebnikov <koct9i@gmail.com>
    Reported-by: Daniel Forrest <dan.forrest@ssec.wisc.edu>
    Tested-by: Michal Hocko <mhocko@suse.cz>
    Tested-by: Jerome Marchand <jmarchan@redhat.com>
    Reviewed-by: Michal Hocko <mhocko@suse.cz>
    Reviewed-by: Rik van Riel <riel@redhat.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    [lizf: Backported to 3.4: adjust context]
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit b26c83df4ea0b42d394db241c4f775be025171ba
Author: Andreas Müller <goo@stapelspeicher.org>
Date:   Fri Dec 12 12:11:11 2014 +0100

    mac80211: fix multicast LED blinking and counter
    
    commit d025933e29872cb1fe19fc54d80e4dfa4ee5779c upstream.
    
    As multicast-frames can't be fragmented, "dot11MulticastReceivedFrameCount"
    stopped being incremented after the use-after-free fix. Furthermore, the
    RX-LED will be triggered by every multicast frame (which wouldn't happen
    before) which wouldn't allow the LED to rest at all.
    
    Fixes https://bugzilla.kernel.org/show_bug.cgi?id=89431 which also had the
    patch.
    
    Fixes: b8fff407a180 ("mac80211: fix use-after-free in defragmentation")
    Signed-off-by: Andreas Müller <goo@stapelspeicher.org>
    [rewrite commit message]
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit a1a431db8681724ff5bfe8b413ddb57b3c948959
Author: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Date:   Thu Jan 8 14:53:23 2015 -0800

    Input: I8042 - add Acer Aspire 7738 to the nomux list
    
    commit 9333caeaeae4f831054e0e127a6ed3948b604d3e upstream.
    
    When KBC is in active multiplexing mode the touchpad on this laptop does
    not work.
    
    Reported-by: Bilal Koc <koc.bilo@googlemail.com>
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 5146f1a467a7bd8ffafb97f8e555fe3db681d4ad
Author: Srihari Vijayaraghavan <linux.bug.reporting@gmail.com>
Date:   Wed Jan 7 16:25:53 2015 -0800

    Input: i8042 - reset keyboard to fix Elantech touchpad detection
    
    commit 148e9a711e034e06310a8c36b64957934ebe30f2 upstream.
    
    On some laptops, keyboard needs to be reset in order to successfully detect
    touchpad (e.g., some Gigabyte laptop models with Elantech touchpads).
    Without resettin keyboard touchpad pretends to be completely dead.
    
    Based on the original patch by Mateusz Jończyk this version has been
    expanded to include DMI based detection & application of the fix
    automatically on the affected models of laptops. This has been confirmed to
    fix problem by three users already on three different models of laptops.
    
    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=81331
    Signed-off-by: Srihari Vijayaraghavan <linux.bug.reporting@gmail.com>
    Acked-by: Mateusz Jończyk <mat.jonczyk@o2.pl>
    Tested-by: Srihari Vijayaraghavan <linux.bug.reporting@gmail.com>
    Tested by: Zakariya Dehlawi <zdehlawi@gmail.com>
    Tested-by: Guillaum Bouchard <guillaum.bouchard@gmail.com>
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 3f6d9b62622ce5dbb870160cb3da5f8bfc87adee
Author: Sasha Levin <sasha.levin@oracle.com>
Date:   Wed Dec 3 19:25:05 2014 -0500

    time: adjtimex: Validate the ADJ_FREQUENCY values
    
    commit 5e5aeb4367b450a28f447f6d5ab57d8f2ab16a5f upstream.
    
    Verify that the frequency value from userspace is valid and makes sense.
    
    Unverified values can cause overflows later on.
    
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
    [jstultz: Fix up bug for negative values and drop redunent cap check]
    Signed-off-by: John Stultz <john.stultz@linaro.org>
    [lizf: Backported to 3.4: adjust context]
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 370375c0a447eefedc19e872e5137eeff47162f2
Author: Sasha Levin <sasha.levin@oracle.com>
Date:   Wed Dec 3 19:22:48 2014 -0500

    time: settimeofday: Validate the values of tv from user
    
    commit 6ada1fc0e1c4775de0e043e1bd3ae9d065491aa5 upstream.
    
    An unvalidated user input is multiplied by a constant, which can result in
    an undefined behaviour for large values. While this is validated later,
    we should avoid triggering undefined behaviour.
    
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
    [jstultz: include trivial milisecond->microsecond correction noticed
    by Andy]
    Signed-off-by: John Stultz <john.stultz@linaro.org>
    [lizf: Backported to 3.4: adjust filename]
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit b25489c724b2775cb5eb3eb6d525ad355d1b1f47
Author: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Date:   Wed Jan 7 15:24:19 2015 +0200

    sata_dwc_460ex: fix resource leak on error path
    
    commit 4aaa71873ddb9faf4b0c4826579e2f6d18ff9ab4 upstream.
    
    DMA mapped IO should be unmapped on the error path in probe() and
    unconditionally on remove().
    
    Fixes: 62936009f35a ([libata] Add 460EX on-chip SATA driver, sata_dwc_460ex)
    Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 288a07dd11b2fc0408fbcb2a6dc2f837dedfb3d8
Author: Linus Torvalds <torvalds@linux-foundation.org>
Date:   Tue Jan 6 13:00:05 2015 -0800

    mm: propagate error from stack expansion even for guard page
    
    commit fee7e49d45149fba60156f5b59014f764d3e3728 upstream.
    
    Jay Foad reports that the address sanitizer test (asan) sometimes gets
    confused by a stack pointer that ends up being outside the stack vma
    that is reported by /proc/maps.
    
    This happens due to an interaction between RLIMIT_STACK and the guard
    page: when we do the guard page check, we ignore the potential error
    from the stack expansion, which effectively results in a missing guard
    page, since the expected stack expansion won't have been done.
    
    And since /proc/maps explicitly ignores the guard page (commit
    d7824370e263: "mm: fix up some user-visible effects of the stack guard
    page"), the stack pointer ends up being outside the reported stack area.
    
    This is the minimal patch: it just propagates the error.  It also
    effectively makes the guard page part of the stack limit, which in turn
    measn that the actual real stack is one page less than the stack limit.
    
    Let's see if anybody notices.  We could teach acct_stack_growth() to
    allow an extra page for a grow-up/grow-down stack in the rlimit test,
    but I don't want to add more complexity if it isn't needed.
    
    Reported-and-tested-by: Jay Foad <jay.foad@gmail.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 58250a5c1cc9357d1b41d5ff080ed1990bc344fb
Author: David Peterson <david.peterson@cel.com>
Date:   Tue Jan 6 15:00:52 2015 +0000

    USB: cp210x: add IDs for CEL USB sticks and MeshWorks devices
    
    commit 1ae78a4870989a354028cb17dabf819b595e70e3 upstream.
    
    Added virtual com port VID/PID entries for CEL USB sticks and MeshWorks
    devices.
    
    Signed-off-by: David Peterson <david.peterson@cel.com>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 39930a5de9598226b2dfd4920f251058045bf827
Author: Michael S. Tsirkin <mst@redhat.com>
Date:   Sun Jan 4 17:28:27 2015 +0200

    virtio_pci: document why we defer kfree
    
    commit a1eb03f546d651a8f39c7d0692b1f7f5b4e7e3cd upstream.
    
    The reason we defer kfree until release function is because it's a
    general rule for kobjects: kfree of the reference counter itself is only
    legal in the release function.
    
    Previous patch didn't make this clear, document this in code.
    
    Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
    [lizf: Backported to 3.4: adjust filename]
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit dfa6201a6f6ed869f73a4528e481cd59377e06a6
Author: Sasha Levin <sasha.levin@oracle.com>
Date:   Fri Jan 2 14:47:40 2015 -0500

    virtio_pci: defer kfree until release callback
    
    commit 63bd62a08ca45a0c804c3c89777edc7f76a2d6da upstream.
    
    A struct device which has just been unregistered can live on past the
    point at which a driver decides to drop it's initial reference to the
    kobject gained on allocation.
    
    This implies that when releasing a virtio device, we can't free a struct
    virtio_device until the underlying struct device has been released,
    which might not happen immediately on device_unregister().
    
    Unfortunately, this is exactly what virtio pci does:
    it has an empty release callback, and frees memory immediately
    after unregistering the device.
    
    This causes an easy to reproduce crash if CONFIG_DEBUG_KOBJECT_RELEASE
    it enabled.
    
    To fix, free the memory only once we know the device is gone in the release
    callback.
    
    Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
    Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
    [lizf: Backported to 3.4: adjust filename]
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit d756c73de80039720cb2373468a096dc8e8c14cd
Author: Wanlong Gao <gaowanlong@cn.fujitsu.com>
Date:   Tue Dec 11 11:04:50 2012 +1030

    virtio: use dev_to_virtio wrapper in virtio
    
    commit 9bffdca8c64a72ac54c47a552734ab457bc720d4 upstream.
    
    Use dev_to_virtio wrapper in virtio to make code clearly.
    
    Cc: Rusty Russell <rusty@rustcorp.com.au>
    Cc: "Michael S. Tsirkin" <mst@redhat.com>
    Signed-off-by: Wanlong Gao <gaowanlong@cn.fujitsu.com>
    Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 3d8b6705ac104513c2c72173c1ac83e5331778a7
Author: Takashi Iwai <tiwai@suse.de>
Date:   Mon Jan 5 13:27:33 2015 +0100

    ALSA: hda - Fix wrong gpio_dir & gpio_mask hint setups for IDT/STAC codecs
    
    commit c507de88f6a336bd7296c9ec0073b2d4af8b4f5e upstream.
    
    stac_store_hints() does utterly wrong for masking the values for
    gpio_dir and gpio_data, likely due to copy&paste errors.  Fortunately,
    this feature is used very rarely, so the impact must be really small.
    
    Reported-by: Rasmus Villemoes <linux@rasmusvillemoes.dk>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit acc0b23411b26d9476c7ccff44fc89b21ba2d6f3
Author: Daniel Borkmann <dborkman@redhat.com>
Date:   Sat Jan 3 13:11:10 2015 +0100

    x86, um: actually mark system call tables readonly
    
    commit b485342bd79af363c77ef1a421c4a0aef2de9812 upstream.
    
    Commit a074335a370e ("x86, um: Mark system call tables readonly") was
    supposed to mark the sys_call_table in UML as RO by adding the const,
    but it doesn't have the desired effect as it's nevertheless being placed
    into the data section since __cacheline_aligned enforces sys_call_table
    being placed into .data..cacheline_aligned instead. We need to use
    the ____cacheline_aligned version instead to fix this issue.
    
    Before:
    
    $ nm -v arch/x86/um/sys_call_table_64.o | grep -1 "sys_call_table"
                     U sys_writev
    0000000000000000 D sys_call_table
    0000000000000000 D syscall_table_size
    
    After:
    
    $ nm -v arch/x86/um/sys_call_table_64.o | grep -1 "sys_call_table"
                     U sys_writev
    0000000000000000 R sys_call_table
    0000000000000000 D syscall_table_size
    
    Fixes: a074335a370e ("x86, um: Mark system call tables readonly")
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Daniel Borkmann <dborkman@redhat.com>
    Signed-off-by: Richard Weinberger <richard@nod.at>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 07ba58c83eee1a1d7885280d6af2e62e354cbc44
Author: Preston Fick <pffick@gmail.com>
Date:   Sat Dec 27 01:32:41 2014 -0600

    USB: cp210x: fix ID for production CEL MeshConnect USB Stick
    
    commit 90441b4dbe90ba0c38111ea89fa093a8c9627801 upstream.
    
    Fixing typo for MeshConnect IDs. The original PID (0x8875) is not in
    production and is not needed. Instead it has been changed to the
    official production PID (0x8857).
    
    Signed-off-by: Preston Fick <pffick@gmail.com>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit b3ca896b214d18cdd5a80f06acd0aae17285267b
Author: Tomi Valkeinen <tomi.valkeinen@ti.com>
Date:   Thu Dec 18 13:40:06 2014 +0200

    video/logo: prevent use of logos after they have been freed
    
    commit 92b004d1aa9f367c372511ca0330f58216b25703 upstream.
    
    If the probe of an fb driver has been deferred due to missing
    dependencies, and the probe is later ran when a module is loaded, the
    fbdev framework will try to find a logo to use.
    
    However, the logos are __initdata, and have already been freed. This
    causes sometimes page faults, if the logo memory is not mapped,
    sometimes other random crashes as the logo data is invalid, and
    sometimes nothing, if the fbdev decides to reject the logo (e.g. the
    random value depicting the logo's height is too big).
    
    This patch adds a late_initcall function to mark the logos as freed. In
    reality the logos are freed later, and fbdev probe may be ran between
    this late_initcall and the freeing of the logos. In that case we will
    miss drawing the logo, even if it would be possible.
    
    Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 3f2bfecbcd11c03e3a0303c99097981edc386cb9
Author: Toshiaki Makita <makita.toshiaki@lab.ntt.co.jp>
Date:   Mon Dec 22 19:04:14 2014 +0900

    net: Fix stacked vlan offload features computation
    
    commit 796f2da81bead71ffc91ef70912cd8d1827bf756 upstream.
    
    When vlan tags are stacked, it is very likely that the outer tag is stored
    in skb->vlan_tci and skb->protocol shows the inner tag's vlan_proto.
    Currently netif_skb_features() first looks at skb->protocol even if there
    is the outer tag in vlan_tci, thus it incorrectly retrieves the protocol
    encapsulated by the inner vlan instead of the inner vlan protocol.
    This allows GSO packets to be passed to HW and they end up being
    corrupted.
    
    Fixes: 58e998c6d239 ("offloading: Force software GSO for multiple vlan tags.")
    Signed-off-by: Toshiaki Makita <makita.toshiaki@lab.ntt.co.jp>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [lizf: Backported to 3.4:
     - remove ETH_P_8021AD
     - pass protocol to harmonize_features()]
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 6fb66b080a2694ac17ed5fc7309136e89c1b0884
Author: Rabin Vincent <rabin.vincent@axis.com>
Date:   Fri Dec 19 13:36:08 2014 +0100

    crypto: af_alg - fix backlog handling
    
    commit 7e77bdebff5cb1e9876c561f69710b9ab8fa1f7e upstream.
    
    If a request is backlogged, it's complete() handler will get called
    twice: once with -EINPROGRESS, and once with the final error code.
    
    af_alg's complete handler, unlike other users, does not handle the
    -EINPROGRESS but instead always completes the completion that recvmsg()
    is waiting on.  This can lead to a return to user space while the
    request is still pending in the driver.  If userspace closes the sockets
    before the requests are handled by the driver, this will lead to
    use-after-frees (and potential crashes) in the kernel due to the tfm
    having been freed.
    
    The crashes can be easily reproduced (for example) by reducing the max
    queue length in cryptod.c and running the following (from
    http://www.chronox.de/libkcapi.html) on AES-NI capable hardware:
    
     $ while true; do kcapi -x 1 -e -c '__ecb-aes-aesni' \
        -k 00000000000000000000000000000000 \
        -p 00000000000000000000000000000000 >/dev/null & done
    
    Signed-off-by: Rabin Vincent <rabin.vincent@axis.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 7e7154ffc2cacf2165fa88f5927d992a85413e6b
Author: Jan Kara <jack@suse.cz>
Date:   Fri Dec 19 14:27:55 2014 +0100

    udf: Check component length before reading it
    
    commit e237ec37ec154564f8690c5bd1795339955eeef9 upstream.
    
    Check that length specified in a component of a symlink fits in the
    input buffer we are reading. Also properly ignore component length for
    component types that do not use it. Otherwise we read memory after end
    of buffer for corrupted udf image.
    
    Reported-by: Carl Henrik Lunde <chlunde@ping.uio.no>
    Signed-off-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit bd2b759a41eebdf2ced0c262502a45e088bcc67c
Author: Andy Lutomirski <luto@amacapital.net>
Date:   Fri Dec 19 16:04:11 2014 -0800

    x86_64, vdso: Fix the vdso address randomization algorithm
    
    commit 394f56fe480140877304d342dec46d50dc823d46 upstream.
    
    The theory behind vdso randomization is that it's mapped at a random
    offset above the top of the stack.  To avoid wasting a page of
    memory for an extra page table, the vdso isn't supposed to extend
    past the lowest PMD into which it can fit.  Other than that, the
    address should be a uniformly distributed address that meets all of
    the alignment requirements.
    
    The current algorithm is buggy: the vdso has about a 50% probability
    of being at the very end of a PMD.  The current algorithm also has a
    decent chance of failing outright due to incorrect handling of the
    case where the top of the stack is near the top of its PMD.
    
    This fixes the implementation.  The paxtest estimate of vdso
    "randomisation" improves from 11 bits to 18 bits.  (Disclaimer: I
    don't know what the paxtest code is actually calculating.)
    
    It's worth noting that this algorithm is inherently biased: the vdso
    is more likely to end up near the end of its PMD than near the
    beginning.  Ideally we would either nix the PMD sharing requirement
    or jointly randomize the vdso and the stack to reduce the bias.
    
    In the mean time, this is a considerable improvement with basically
    no risk of compatibility issues, since the allowed outputs of the
    algorithm are unchanged.
    
    As an easy test, doing this:
    
    for i in `seq 10000`
      do grep -P vdso /proc/self/maps |cut -d- -f1
    done |sort |uniq -d
    
    used to produce lots of output (1445 lines on my most recent run).
    A tiny subset looks like this:
    
    7fffdfffe000
    7fffe01fe000
    7fffe05fe000
    7fffe07fe000
    7fffe09fe000
    7fffe0bfe000
    7fffe0dfe000
    
    Note the suspicious fe000 endings.  With the fix, I get a much more
    palatable 76 repeated addresses.
    
    Reviewed-by: Kees Cook <keescook@chromium.org>
    Signed-off-by: Andy Lutomirski <luto@amacapital.net>
    [lizf: Backported to 3.4:
     - adjust context
     - adjust comment]
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 99961be4f571a89b2213d459ec2b970b99839654
Author: Jan Kara <jack@suse.cz>
Date:   Thu Dec 18 22:37:50 2014 +0100

    udf: Check path length when reading symlink
    
    commit 0e5cc9a40ada6046e6bc3bdfcd0c0d7e4b706b14 upstream.
    
    Symlink reading code does not check whether the resulting path fits into
    the page provided by the generic code. This isn't as easy as just
    checking the symlink size because of various encoding conversions we
    perform on path. So we have to check whether there is still enough space
    in the buffer on the fly.
    
    Reported-by: Carl Henrik Lunde <chlunde@ping.uio.no>
    Signed-off-by: Jan Kara <jack@suse.cz>
    [lizf: Backported to 3.4: udf_get_filename() is called in do_udf_readdir()]
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit fb1b20745fd0ac7a7c48f589842e70225bae1426
Author: Jan Kara <jack@suse.cz>
Date:   Fri Dec 19 12:21:47 2014 +0100

    udf: Verify symlink size before loading it
    
    commit a1d47b262952a45aae62bd49cfaf33dd76c11a2c upstream.
    
    UDF specification allows arbitrarily large symlinks. However we support
    only symlinks at most one block large. Check the length of the symlink
    so that we don't access memory beyond end of the symlink block.
    
    Reported-by: Carl Henrik Lunde <chlunde@gmail.com>
    Signed-off-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit f9063aff1c0a589d225267e895b180d097f62409
Author: Jan Kara <jack@suse.cz>
Date:   Fri Dec 19 12:03:53 2014 +0100

    udf: Verify i_size when loading inode
    
    commit e159332b9af4b04d882dbcfe1bb0117f0a6d4b58 upstream.
    
    Verify that inode size is sane when loading inode with data stored in
    ICB. Otherwise we may get confused later when working with the inode and
    inode size is too big.
    
    Reported-by: Carl Henrik Lunde <chlunde@ping.uio.no>
    Signed-off-by: Jan Kara <jack@suse.cz>
    [lizf: Backported to 3.4: just return on error, as there's no "out" label]
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit e44da0a95a798cbfbc1ec6760b3d1cfa531a9797
Author: Jan Kara <jack@suse.cz>
Date:   Thu Dec 18 17:26:10 2014 +0100

    isofs: Fix unchecked printing of ER records
    
    commit 4e2024624e678f0ebb916e6192bd23c1f9fdf696 upstream.
    
    We didn't check length of rock ridge ER records before printing them.
    Thus corrupted isofs image can cause us to access and print some memory
    behind the buffer with obvious consequences.
    
    Reported-and-tested-by: Carl Henrik Lunde <chlunde@ping.uio.no>
    Signed-off-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 9939834ccd271dde9b020447ff01e0939b058346
Author: Junxiao Bi <junxiao.bi@oracle.com>
Date:   Thu Dec 18 16:17:37 2014 -0800

    ocfs2: fix journal commit deadlock
    
    commit 136f49b9171074872f2a14ad0ab10486d1ba13ca upstream.
    
    For buffer write, page lock will be got in write_begin and released in
    write_end, in ocfs2_write_end_nolock(), before it unlock the page in
    ocfs2_free_write_ctxt(), it calls ocfs2_run_deallocs(), this will ask
    for the read lock of journal->j_trans_barrier.  Holding page lock and
    ask for journal->j_trans_barrier breaks the locking order.
    
    This will cause a deadlock with journal commit threads, ocfs2cmt will
    get write lock of journal->j_trans_barrier first, then it wakes up
    kjournald2 to do the commit work, at last it waits until done.  To
    commit journal, kjournald2 needs flushing data first, it needs get the
    cache page lock.
    
    Since some ocfs2 cluster locks are holding by write process, this
    deadlock may hung the whole cluster.
    
    unlock pages before ocfs2_run_deallocs() can fix the locking order, also
    put unlock before ocfs2_commit_trans() to make page lock is unlocked
    before j_trans_barrier to preserve unlocking order.
    
    Signed-off-by: Junxiao Bi <junxiao.bi@oracle.com>
    Reviewed-by: Wengang Wang <wen.gang.wang@oracle.com>
    Reviewed-by: Mark Fasheh <mfasheh@suse.de>
    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 46ca2c2cbe84b9a87f105c20182f2274501a0604
Author: Jiri Jaburek <jjaburek@redhat.com>
Date:   Thu Dec 18 02:03:19 2014 +0100

    ALSA: usb-audio: extend KEF X300A FU 10 tweak to Arcam rPAC
    
    commit d70a1b9893f820fdbcdffac408c909c50f2e6b43 upstream.
    
    The Arcam rPAC seems to have the same problem - whenever anything
    (alsamixer, udevd, 3.9+ kernel from 60af3d037eb8c, ..) attempts to
    access mixer / control interface of the card, the firmware "locks up"
    the entire device, resulting in
      SNDRV_PCM_IOCTL_HW_PARAMS failed (-5): Input/output error
    from alsa-lib.
    
    Other operating systems can somehow read the mixer (there seems to be
    playback volume/mute), but any manipulation is ignored by the device
    (which has hardware volume controls).
    
    Signed-off-by: Jiri Jaburek <jjaburek@redhat.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 32ba51997e4318bc09361d83933dc99d8e1c227c
Author: Nicholas Bellinger <nab@linux-iscsi.org>
Date:   Thu Nov 20 20:50:07 2014 -0800

    iscsi-target: Fail connection on short sendmsg writes
    
    commit 6bf6ca7515c1df06f5c03737537f5e0eb191e29e upstream.
    
    This patch changes iscsit_do_tx_data() to fail on short writes
    when kernel_sendmsg() returns a value different than requested
    transfer length, returning -EPIPE and thus causing a connection
    reset to occur.
    
    This avoids a potential bug in the original code where a short
    write would result in kernel_sendmsg() being called again with
    the original iovec base + length.
    
    In practice this has not been an issue because iscsit_do_tx_data()
    is only used for transferring 48 byte headers + 4 byte digests,
    along with seldom used control payloads from NOPIN + TEXT_RSP +
    REJECT with less than 32k of data.
    
    So following Al's audit of iovec consumers, go ahead and fail
    the connection on short writes for now, and remove the bogus
    logic ahead of his proper upstream fix.
    
    Reported-by: Al Viro <viro@zeniv.linux.org.uk>
    Cc: David S. Miller <davem@davemloft.net>
    Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 96e44adce250199ec9b2b928be66365779ff1b59
Author: Jan Kara <jack@suse.cz>
Date:   Mon Dec 15 14:22:46 2014 +0100

    isofs: Fix infinite looping over CE entries
    
    commit f54e18f1b831c92f6512d2eedb224cd63d607d3d upstream.
    
    Rock Ridge extensions define so called Continuation Entries (CE) which
    define where is further space with Rock Ridge data. Corrupted isofs
    image can contain arbitrarily long chain of these, including a one
    containing loop and thus causing kernel to end in an infinite loop when
    traversing these entries.
    
    Limit the traversal to 32 entries which should be more than enough space
    to store all the Rock Ridge data.
    
    Reported-by: P J P <ppandit@redhat.com>
    Signed-off-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 68aa0365a6a71c8fc4b2aaded74511c87614e1fb
Author: Long Li <longli@microsoft.com>
Date:   Fri Dec 5 19:38:18 2014 -0800

    storvsc: ring buffer failures may result in I/O freeze
    
    commit e86fb5e8ab95f10ec5f2e9430119d5d35020c951 upstream.
    
    When ring buffer returns an error indicating retry, storvsc may not
    return a proper error code to SCSI when bounce buffer is not used.
    This has introduced I/O freeze on RAID running atop storvsc devices.
    This patch fixes it by always returning a proper error code.
    
    Signed-off-by: Long Li <longli@microsoft.com>
    Reviewed-by: K. Y. Srinivasan <kys@microsoft.com>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 54c93a65f5ac2f4d2d4a2a2eb633191a2527e5ab
Author: Andy Lutomirski <luto@amacapital.net>
Date:   Wed Dec 17 14:48:30 2014 -0800

    x86/tls: Don't validate lm in set_thread_area() after all
    
    commit 3fb2f4237bb452eb4e98f6a5dbd5a445b4fed9d0 upstream.
    
    It turns out that there's a lurking ABI issue.  GCC, when
    compiling this in a 32-bit program:
    
    struct user_desc desc = {
    	.entry_number    = idx,
    	.base_addr       = base,
    	.limit           = 0xfffff,
    	.seg_32bit       = 1,
    	.contents        = 0, /* Data, grow-up */
    	.read_exec_only  = 0,
    	.limit_in_pages  = 1,
    	.seg_not_present = 0,
    	.useable         = 0,
    };
    
    will leave .lm uninitialized.  This means that anything in the
    kernel that reads user_desc.lm for 32-bit tasks is unreliable.
    
    Revert the .lm check in set_thread_area().  The value never did
    anything in the first place.
    
    Fixes: 0e58af4e1d21 ("x86/tls: Disallow unusual TLS segments")
    Signed-off-by: Andy Lutomirski <luto@amacapital.net>
    Acked-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Link: http://lkml.kernel.org/r/d7875b60e28c512f6a6fc0baf5714d58e7eaadbb.1418856405.git.luto@amacapital.net
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    [lizf: Backported to 3.4: adjust filename]
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 3a0dc1134f3f6984b07d232e14121de7296cb3ba
Author: Andy Lutomirski <luto@amacapital.net>
Date:   Thu Dec 4 16:48:17 2014 -0800

    x86/tls: Disallow unusual TLS segments
    
    commit 0e58af4e1d2166e9e33375a0f121e4867010d4f8 upstream.
    
    Users have no business installing custom code segments into the
    GDT, and segments that are not present but are otherwise valid
    are a historical source of interesting attacks.
    
    For completeness, block attempts to set the L bit.  (Prior to
    this patch, the L bit would have been silently dropped.)
    
    This is an ABI break.  I've checked glibc, musl, and Wine, and
    none of them look like they'll have any trouble.
    
    Note to stable maintainers: this is a hardening patch that fixes
    no known bugs.  Given the possibility of ABI issues, this
    probably shouldn't be backported quickly.
    
    Signed-off-by: Andy Lutomirski <luto@amacapital.net>
    Acked-by: H. Peter Anvin <hpa@zytor.com>
    Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: security@kernel.org <security@kernel.org>
    Cc: Willy Tarreau <w@1wt.eu>
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 0d030473658c7760c4cdd4fd0cc61e287b6023b3
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Thu Dec 11 23:01:41 2014 +0100

    genirq: Prevent proc race against freeing of irq descriptors
    
    commit c291ee622165cb2c8d4e7af63fffd499354a23be upstream.
    
    Since the rework of the sparse interrupt code to actually free the
    unused interrupt descriptors there exists a race between the /proc
    interfaces to the irq subsystem and the code which frees the interrupt
    descriptor.
    
    CPU0				CPU1
    				show_interrupts()
    				  desc = irq_to_desc(X);
    free_desc(desc)
      remove_from_radix_tree();
      kfree(desc);
    				  raw_spinlock_irq(&desc->lock);
    
    /proc/interrupts is the only interface which can actively corrupt
    kernel memory via the lock access. /proc/stat can only read from freed
    memory. Extremly hard to trigger, but possible.
    
    The interfaces in /proc/irq/N/ are not affected by this because the
    removal of the proc file is serialized in procfs against concurrent
    readers/writers. The removal happens before the descriptor is freed.
    
    For architectures which have CONFIG_SPARSE_IRQ=n this is a non issue
    as the descriptor is never freed. It's merely cleared out with the irq
    descriptor lock held. So any concurrent proc access will either see
    the old correct value or the cleared out ones.
    
    Protect the lookup and access to the irq descriptor in
    show_interrupts() with the sparse_irq_lock.
    
    Provide kstat_irqs_usr() which is protecting the lookup and access
    with sparse_irq_lock and switch /proc/stat to use it.
    
    Document the existing kstat_irqs interfaces so it's clear that the
    caller needs to take care about protection. The users of these
    interfaces are either not affected due to SPARSE_IRQ=n or already
    protected against removal.
    
    Fixes: 1f5a5b87f78f "genirq: Implement a sane sparse_irq allocator"
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    [lizf: Backported to 3.4:
     - define kstat_irqs() for CONFIG_GENERIC_HARDIRQS
     - add ifdef/endif CONFIG_SPARSE_IRQ]
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 81cc271d2c4a179aae41c503562af9e11ce94adc
Author: Andy Lutomirski <luto@amacapital.net>
Date:   Mon Dec 8 13:55:20 2014 -0800

    x86_64, switch_to(): Load TLS descriptors before switching DS and ES
    
    commit f647d7c155f069c1a068030255c300663516420e upstream.
    
    Otherwise, if buggy user code points DS or ES into the TLS
    array, they would be corrupted after a context switch.
    
    This also significantly improves the comments and documents some
    gotchas in the code.
    
    Before this patch, the both tests below failed.  With this
    patch, the es test passes, although the gsbase test still fails.
    
     ----- begin es test -----
    
    /*
     * Copyright (c) 2014 Andy Lutomirski
     * GPL v2
     */
    
    static unsigned short GDT3(int idx)
    {
    	return (idx << 3) | 3;
    }
    
    static int create_tls(int idx, unsigned int base)
    {
    	struct user_desc desc = {
    		.entry_number    = idx,
    		.base_addr       = base,
    		.limit           = 0xfffff,
    		.seg_32bit       = 1,
    		.contents        = 0, /* Data, grow-up */
    		.read_exec_only  = 0,
    		.limit_in_pages  = 1,
    		.seg_not_present = 0,
    		.useable         = 0,
    	};
    
    	if (syscall(SYS_set_thread_area, &desc) != 0)
    		err(1, "set_thread_area");
    
    	return desc.entry_number;
    }
    
    int main()
    {
    	int idx = create_tls(-1, 0);
    	printf("Allocated GDT index %d\n", idx);
    
    	unsigned short orig_es;
    	asm volatile ("mov %%es,%0" : "=rm" (orig_es));
    
    	int errors = 0;
    	int total = 1000;
    	for (int i = 0; i < total; i++) {
    		asm volatile ("mov %0,%%es" : : "rm" (GDT3(idx)));
    		usleep(100);
    
    		unsigned short es;
    		asm volatile ("mov %%es,%0" : "=rm" (es));
    		asm volatile ("mov %0,%%es" : : "rm" (orig_es));
    		if (es != GDT3(idx)) {
    			if (errors == 0)
    				printf("[FAIL]\tES changed from 0x%hx to 0x%hx\n",
    				       GDT3(idx), es);
    			errors++;
    		}
    	}
    
    	if (errors) {
    		printf("[FAIL]\tES was corrupted %d/%d times\n", errors, total);
    		return 1;
    	} else {
    		printf("[OK]\tES was preserved\n");
    		return 0;
    	}
    }
    
     ----- end es test -----
    
     ----- begin gsbase test -----
    
    /*
     * gsbase.c, a gsbase test
     * Copyright (c) 2014 Andy Lutomirski
     * GPL v2
     */
    
    static unsigned char *testptr, *testptr2;
    
    static unsigned char read_gs_testvals(void)
    {
    	unsigned char ret;
    	asm volatile ("movb %%gs:%1, %0" : "=r" (ret) : "m" (*testptr));
    	return ret;
    }
    
    int main()
    {
    	int errors = 0;
    
    	testptr = mmap((void *)0x200000000UL, 1, PROT_READ | PROT_WRITE,
    		       MAP_PRIVATE | MAP_FIXED | MAP_ANONYMOUS, -1, 0);
    	if (testptr == MAP_FAILED)
    		err(1, "mmap");
    
    	testptr2 = mmap((void *)0x300000000UL, 1, PROT_READ | PROT_WRITE,
    		       MAP_PRIVATE | MAP_FIXED | MAP_ANONYMOUS, -1, 0);
    	if (testptr2 == MAP_FAILED)
    		err(1, "mmap");
    
    	*testptr = 0;
    	*testptr2 = 1;
    
    	if (syscall(SYS_arch_prctl, ARCH_SET_GS,
    		    (unsigned long)testptr2 - (unsigned long)testptr) != 0)
    		err(1, "ARCH_SET_GS");
    
    	usleep(100);
    
    	if (read_gs_testvals() == 1) {
    		printf("[OK]\tARCH_SET_GS worked\n");
    	} else {
    		printf("[FAIL]\tARCH_SET_GS failed\n");
    		errors++;
    	}
    
    	asm volatile ("mov %0,%%gs" : : "r" (0));
    
    	if (read_gs_testvals() == 0) {
    		printf("[OK]\tWriting 0 to gs worked\n");
    	} else {
    		printf("[FAIL]\tWriting 0 to gs failed\n");
    		errors++;
    	}
    
    	usleep(100);
    
    	if (read_gs_testvals() == 0) {
    		printf("[OK]\tgsbase is still zero\n");
    	} else {
    		printf("[FAIL]\tgsbase was corrupted\n");
    		errors++;
    	}
    
    	return errors == 0 ? 0 : 1;
    }
    
     ----- end gsbase test -----
    
    Signed-off-by: Andy Lutomirski <luto@amacapital.net>
    Cc: Andi Kleen <andi@firstfloor.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Link: http://lkml.kernel.org/r/509d27c9fec78217691c3dad91cec87e1006b34a.1418075657.git.luto@amacapital.net
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 0b3edd6b31e997cb95208ce0afb7f46f60146d35
Author: Jan Kara <jack@suse.cz>
Date:   Wed Dec 10 15:52:22 2014 -0800

    ncpfs: return proper error from NCP_IOC_SETROOT ioctl
    
    commit a682e9c28cac152e6e54c39efcf046e0c8cfcf63 upstream.
    
    If some error happens in NCP_IOC_SETROOT ioctl, the appropriate error
    return value is then (in most cases) just overwritten before we return.
    This can result in reporting success to userspace although error happened.
    
    This bug was introduced by commit 2e54eb96e2c8 ("BKL: Remove BKL from
    ncpfs").  Propagate the errors correctly.
    
    Coverity id: 1226925.
    
    Fixes: 2e54eb96e2c80 ("BKL: Remove BKL from ncpfs")
    Signed-off-by: Jan Kara <jack@suse.cz>
    Cc: Petr Vandrovec <petr@vandrovec.name>
    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 11b814e3597eeffa475e2e41323aa52d2e2289fa
Author: Filipe Manana <fdmanana@suse.com>
Date:   Sun Dec 7 21:31:47 2014 +0000

    Btrfs: fix fs corruption on transaction abort if device supports discard
    
    commit 678886bdc6378c1cbd5072da2c5a3035000214e3 upstream.
    
    When we abort a transaction we iterate over all the ranges marked as dirty
    in fs_info->freed_extents[0] and fs_info->freed_extents[1], clear them
    from those trees, add them back (unpin) to the free space caches and, if
    the fs was mounted with "-o discard", perform a discard on those regions.
    Also, after adding the regions to the free space caches, a fitrim ioctl call
    can see those ranges in a block group's free space cache and perform a discard
    on the ranges, so the same issue can happen without "-o discard" as well.
    
    This causes corruption, affecting one or multiple btree nodes (in the worst
    case leaving the fs unmountable) because some of those ranges (the ones in
    the fs_info->pinned_extents tree) correspond to btree nodes/leafs that are
    referred by the last committed super block - breaking the rule that anything
    that was committed by a transaction is untouched until the next transaction
    commits successfully.
    
    I ran into this while running in a loop (for several hours) the fstest that
    I recently submitted:
    
      [PATCH] fstests: add btrfs test to stress chunk allocation/removal and fstrim
    
    The corruption always happened when a transaction aborted and then fsck complained
    like this:
    
       _check_btrfs_filesystem: filesystem on /dev/sdc is inconsistent
       *** fsck.btrfs output ***
       Check tree block failed, want=94945280, have=0
       Check tree block failed, want=94945280, have=0
       Check tree block failed, want=94945280, have=0
       Check tree block failed, want=94945280, have=0
       Check tree block failed, want=94945280, have=0
       read block failed check_tree_block
       Couldn't open file system
    
    In this case 94945280 corresponded to the root of a tree.
    Using frace what I observed was the following sequence of steps happened:
    
       1) transaction N started, fs_info->pinned_extents pointed to
          fs_info->freed_extents[0];
    
       2) node/eb 94945280 is created;
    
       3) eb is persisted to disk;
    
       4) transaction N commit starts, fs_info->pinned_extents now points to
          fs_info->freed_extents[1], and transaction N completes;
    
       5) transaction N + 1 starts;
    
       6) eb is COWed, and btrfs_free_tree_block() called for this eb;
    
       7) eb range (94945280 to 94945280 + 16Kb) is added to
          fs_info->pinned_extents (fs_info->freed_extents[1]);
    
       8) Something goes wrong in transaction N + 1, like hitting ENOSPC
          for example, and the transaction is aborted, turning the fs into
          readonly mode. The stack trace I got for example:
    
          [112065.253935]  [<ffffffff8140c7b6>] dump_stack+0x4d/0x66
          [112065.254271]  [<ffffffff81042984>] warn_slowpath_common+0x7f/0x98
          [112065.254567]  [<ffffffffa0325990>] ? __btrfs_abort_transaction+0x50/0x10b [btrfs]
          [112065.261674]  [<ffffffff810429e5>] warn_slowpath_fmt+0x48/0x50
          [112065.261922]  [<ffffffffa032949e>] ? btrfs_free_path+0x26/0x29 [btrfs]
          [112065.262211]  [<ffffffffa0325990>] __btrfs_abort_transaction+0x50/0x10b [btrfs]
          [112065.262545]  [<ffffffffa036b1d6>] btrfs_remove_chunk+0x537/0x58b [btrfs]
          [112065.262771]  [<ffffffffa033840f>] btrfs_delete_unused_bgs+0x1de/0x21b [btrfs]
          [112065.263105]  [<ffffffffa0343106>] cleaner_kthread+0x100/0x12f [btrfs]
          (...)
          [112065.264493] ---[ end trace dd7903a975a31a08 ]---
          [112065.264673] BTRFS: error (device sdc) in btrfs_remove_chunk:2625: errno=-28 No space left
          [112065.264997] BTRFS info (device sdc): forced readonly
    
       9) The clear kthread sees that the BTRFS_FS_STATE_ERROR bit is set in
          fs_info->fs_state and calls btrfs_cleanup_transaction(), which in
          turn calls btrfs_destroy_pinned_extent();
    
       10) Then btrfs_destroy_pinned_extent() iterates over all the ranges
           marked as dirty in fs_info->freed_extents[], and for each one
           it calls discard, if the fs was mounted with "-o discard", and
           adds the range to the free space cache of the respective block
           group;
    
       11) btrfs_trim_block_group(), invoked from the fitrim ioctl code path,
           sees the free space entries and performs a discard;
    
       12) After an umount and mount (or fsck), our eb's location on disk was full
           of zeroes, and it should have been untouched, because it was marked as
           dirty in the fs_info->pinned_extents tree, and therefore used by the
           trees that the last committed superblock points to.
    
    Fix this by not performing a discard and not adding the ranges to the free space
    caches - it's useless from this point since the fs is now in readonly mode and
    we won't write free space caches to disk anymore (otherwise we would leak space)
    nor any new superblock. By not adding the ranges to the free space caches, it
    prevents other code paths from allocating that space and write to it as well,
    therefore being safer and simpler.
    
    This isn't a new problem, as it's been present since 2011 (git commit
    acce952b0263825da32cf10489413dec78053347).
    
    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 187c38d0b6fbcc6a17cae6754148eb3f3f117458
Author: Takashi Iwai <tiwai@suse.de>
Date:   Thu Dec 4 18:25:19 2014 +0100

    KEYS: Fix stale key registration at error path
    
    commit b26bdde5bb27f3f900e25a95e33a0c476c8c2c48 upstream.
    
    When loading encrypted-keys module, if the last check of
    aes_get_sizes() in init_encrypted() fails, the driver just returns an
    error without unregistering its key type.  This results in the stale
    entry in the list.  In addition to memory leaks, this leads to a kernel
    crash when registering a new key type later.
    
    This patch fixes the problem by swapping the calls of aes_get_sizes()
    and register_key_type(), and releasing resources properly at the error
    paths.
    
    Bugzilla: https://bugzilla.opensuse.org/show_bug.cgi?id=908163
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Mimi Zohar <zohar@linux.vnet.ibm.com>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit db84e0afa4ce394a30771ef2c02b36ee79f58e07
Author: Takashi Iwai <tiwai@suse.de>
Date:   Sat Dec 6 18:02:55 2014 +0100

    ALSA: usb-audio: Don't resubmit pending URBs at MIDI error recovery
    
    commit 66139a48cee1530c91f37c145384b4ee7043f0b7 upstream.
    
    In snd_usbmidi_error_timer(), the driver tries to resubmit MIDI input
    URBs to reactivate the MIDI stream, but this causes the error when
    some of URBs are still pending like:
    
     WARNING: CPU: 0 PID: 0 at ../drivers/usb/core/urb.c:339 usb_submit_urb+0x5f/0x70()
     URB ef705c40 submitted while active
     CPU: 0 PID: 0 Comm: swapper/0 Not tainted 3.16.6-2-desktop #1
     Hardware name: FOXCONN TPS01/TPS01, BIOS 080015  03/23/2010
      c0984bfa f4009ed4 c078deaf f4009ee4 c024c884 c09a135c f4009f00 00000000
      c0984bfa 00000153 c061ac4f c061ac4f 00000009 00000001 ef705c40 e854d1c0
      f4009eec c024c8d3 00000009 f4009ee4 c09a135c f4009f00 f4009f04 c061ac4f
     Call Trace:
      [<c0205df6>] try_stack_unwind+0x156/0x170
      [<c020482a>] dump_trace+0x5a/0x1b0
      [<c0205e56>] show_trace_log_lvl+0x46/0x50
      [<c02049d1>] show_stack_log_lvl+0x51/0xe0
      [<c0205eb7>] show_stack+0x27/0x50
      [<c078deaf>] dump_stack+0x45/0x65
      [<c024c884>] warn_slowpath_common+0x84/0xa0
      [<c024c8d3>] warn_slowpath_fmt+0x33/0x40
      [<c061ac4f>] usb_submit_urb+0x5f/0x70
      [<f7974104>] snd_usbmidi_submit_urb+0x14/0x60 [snd_usbmidi_lib]
      [<f797483a>] snd_usbmidi_error_timer+0x6a/0xa0 [snd_usbmidi_lib]
      [<c02570c0>] call_timer_fn+0x30/0x130
      [<c0257442>] run_timer_softirq+0x1c2/0x260
      [<c0251493>] __do_softirq+0xc3/0x270
      [<c0204732>] do_softirq_own_stack+0x22/0x30
      [<c025186d>] irq_exit+0x8d/0xa0
      [<c0795228>] smp_apic_timer_interrupt+0x38/0x50
      [<c0794a3c>] apic_timer_interrupt+0x34/0x3c
      [<c0673d9e>] cpuidle_enter_state+0x3e/0xd0
      [<c028bb8d>] cpu_idle_loop+0x29d/0x3e0
      [<c028bd23>] cpu_startup_entry+0x53/0x60
      [<c0bfac1e>] start_kernel+0x415/0x41a
    
    For avoiding these errors, check the pending URBs and skip
    resubmitting such ones.
    
    Reported-and-tested-by: Stefan Seyfried <stefan.seyfried@googlemail.com>
    Acked-by: Clemens Ladisch <clemens@ladisch.de>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 3a95358ade4950574185c5b58835693836aa4ecb
Author: Stephane Grosjean <s.grosjean@peak-system.com>
Date:   Fri Nov 28 13:49:10 2014 +0100

    can: peak_usb: fix cleanup sequence order in case of error during init
    
    commit af35d0f1cce7a990286e2b94c260a2c2d2a0e4b0 upstream.
    
    This patch sets the correct reverse sequence order to the instructions
    set to run, when any failure occurs during the initialization steps.
    It also adds the missing unregistration call of the can device if the
    failure appears after having been registered.
    
    Signed-off-by: Stephane Grosjean <s.grosjean@peak-system.com>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit b476ea71ec15a885cab76dc1aa22abd6f24b9213
Author: Stephane Grosjean <s.grosjean@peak-system.com>
Date:   Fri Nov 28 14:08:48 2014 +0100

    can: peak_usb: fix memset() usage
    
    commit dc50ddcd4c58a5a0226038307d6ef884bec9f8c2 upstream.
    
    This patchs fixes a misplaced call to memset() that fills the request
    buffer with 0. The problem was with sending PCAN_USBPRO_REQ_FCT
    requests, the content set by the caller was thus lost.
    
    With this patch, the memory area is zeroed only when requesting info
    from the device.
    
    Signed-off-by: Stephane Grosjean <s.grosjean@peak-system.com>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit b3995df24d92632192ca83f0a50d7436c74a40d3
Author: Alex Deucher <alexander.deucher@amd.com>
Date:   Wed Dec 3 00:03:49 2014 -0500

    drm/radeon: check the right ring in radeon_evict_flags()
    
    commit 5e5c21cac1001089007260c48b0c89ebaace0e71 upstream.
    
    Check the that ring we are using for copies is functional
    rather than the GFX ring.  On newer asics we use the DMA
    ring for bo moves.
    
    Reviewed-by: Christian König <christian.koenig@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 664c30951d360ab698b2674c0de13df4f78119ee
Author: Dominique Leuenberger <dimstar@opensuse.org>
Date:   Thu Nov 13 20:57:37 2014 +0100

    hp_accel: Add support for HP ZBook 15
    
    commit 6583659e0f92e38079a8dd081e0a1181a0f37747 upstream.
    
    HP ZBook 15 laptop needs a non-standard mapping (x_inverted).
    
    BugLink: http://bugzilla.opensuse.org/show_bug.cgi?id=905329
    Signed-off-by: Dominique Leuenberger <dimstar@opensuse.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Darren Hart <dvhart@linux.intel.com>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 6fe79f9ea59c384a73079f1a3e48eeea8b0d01c3
Author: Thomas Hellstrom <thellstrom@vmware.com>
Date:   Tue Dec 2 03:36:57 2014 -0800

    drm/vmwgfx: Fix fence event code
    
    commit 89669e7a7f96be3ee8d9a22a071d7c0d3b4428fc upstream.
    
    The commit "vmwgfx: Rework fence event action" introduced a number of bugs
    that are fixed with this commit:
    
    a) A forgotten return stateemnt.
    b) An if statement with identical branches.
    
    Reported-by: Rob Clark <robdclark@gmail.com>
    Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
    Reviewed-by: Jakob Bornecrantz <jakob@vmware.com>
    Reviewed-by: Sinclair Yeh <syeh@vmware.com>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit cf1d72fd288232f84d5a20a16691fdee89bb2070
Author: Thomas Hellstrom <thellstrom@vmware.com>
Date:   Tue Dec 2 03:32:24 2014 -0800

    drm/vmwgfx: Don't use memory accounting for kernel-side fence objects
    
    commit 1f563a6a46544602183e7493b6ef69769d3d76d9 upstream.
    
    Kernel side fence objects are used when unbinding resources and may thus be
    created as part of a memory reclaim operation. This might trigger recursive
    memory reclaims and result in the kernel running out of stack space.
    
    So a simple way out is to avoid accounting of these fence objects.
    In principle this is OK since while user-space can trigger the creation of
    such objects, it can't really hold on to them. However, their lifetime is
    quite long, so some form of accounting should perhaps be implemented in the
    future.
    
    Fixes kernel crashes when running, for example viewperf11 ensight-04 test 3
    with low system memory settings.
    
    Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
    Reviewed-by: Jakob Bornecrantz <jakob@vmware.com>
    Reviewed-by: Sinclair Yeh <syeh@vmware.com>
    [lizf: Backported to 3.4: adjust context]
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit b21fe28e46076d58c43d552a06e8f6b41ec247ea
Author: Jiang Liu <jiang.liu@linux.intel.com>
Date:   Wed Nov 26 09:42:10 2014 +0800

    iommu/vt-d: Fix an off-by-one bug in __domain_mapping()
    
    commit cc4f14aa170d895c9a43bdb56f62070c8a6da908 upstream.
    
    There's an off-by-one bug in function __domain_mapping(), which may
    trigger the BUG_ON(nr_pages < lvl_pages) when
    	(nr_pages + 1) & superpage_mask == 0
    
    The issue was introduced by commit 9051aa0268dc "intel-iommu: Combine
    domain_pfn_mapping() and domain_sg_mapping()", which sets sg_res to
    "nr_pages + 1" to avoid some of the 'sg_res==0' code paths.
    
    It's safe to remove extra "+1" because sg_res is only used to calculate
    page size now.
    
    Reported-And-Tested-by: Sudeep Dutt <sudeep.dutt@intel.com>
    Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
    Acked-By: David Woodhouse <David.Woodhouse@intel.com>
    Signed-off-by: Joerg Roedel <jroedel@suse.de>
    [lizf: Backported to 3.4: adjust context]
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 930830786da3f076da85ff0c057685bd69439b26
Author: Felix Fietkau <nbd@openwrt.org>
Date:   Sun Nov 30 21:52:57 2014 +0100

    ath5k: fix hardware queue index assignment
    
    commit 9e4982f6a51a2442f1bb588fee42521b44b4531c upstream.
    
    Like with ath9k, ath5k queues also need to be ordered by priority.
    queue_info->tqi_subtype already contains the correct index, so use it
    instead of relying on the order of ath5k_hw_setup_tx_queue calls.
    
    Signed-off-by: Felix Fietkau <nbd@openwrt.org>
    Signed-off-by: John W. Linville <linville@tuxdriver.com>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 82e2db27f761521723b10683433e06b525527af9
Author: Felix Fietkau <nbd@openwrt.org>
Date:   Sun Nov 30 20:38:41 2014 +0100

    ath9k: fix BE/BK queue order
    
    commit 78063d81d353e10cbdd279c490593113b8fdae1c upstream.
    
    Hardware queues are ordered by priority. Use queue index 0 for BK, which
    has lower priority than BE.
    
    Signed-off-by: Felix Fietkau <nbd@openwrt.org>
    Signed-off-by: John W. Linville <linville@tuxdriver.com>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 37d2cb4f6b65fd2cdeca0c43eabee23f2c21eb16
Author: Felix Fietkau <nbd@openwrt.org>
Date:   Sun Nov 30 20:38:40 2014 +0100

    ath9k_hw: fix hardware queue allocation
    
    commit ad8fdccf9c197a89e2d2fa78c453283dcc2c343f upstream.
    
    The driver passes the desired hardware queue index for a WMM data queue
    in qinfo->tqi_subtype. This was ignored in ath9k_hw_setuptxqueue, which
    instead relied on the order in which the function is called.
    
    Reported-by: Hubert Feurstein <h.feurstein@gmail.com>
    Signed-off-by: Felix Fietkau <nbd@openwrt.org>
    Signed-off-by: John W. Linville <linville@tuxdriver.com>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 04fb28bc511cf14807810d0563c7f07e00829edd
Author: Michael Halcrow <mhalcrow@google.com>
Date:   Wed Nov 26 09:09:16 2014 -0800

    eCryptfs: Remove buggy and unnecessary write in file name decode routine
    
    commit 942080643bce061c3dd9d5718d3b745dcb39a8bc upstream.
    
    Dmitry Chernenkov used KASAN to discover that eCryptfs writes past the
    end of the allocated buffer during encrypted filename decoding. This
    fix corrects the issue by getting rid of the unnecessary 0 write when
    the current bit offset is 2.
    
    Signed-off-by: Michael Halcrow <mhalcrow@google.com>
    Reported-by: Dmitry Chernenkov <dmitryc@google.com>
    Suggested-by: Kees Cook <keescook@chromium.org>
    Signed-off-by: Tyler Hicks <tyhicks@canonical.com>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit e660b2f263de95566ffa53f9f0cc229e239311a7
Author: Robert Baldyga <r.baldyga@samsung.com>
Date:   Mon Nov 24 07:56:21 2014 +0100

    serial: samsung: wait for transfer completion before clock disable
    
    commit 1ff383a4c3eda8893ec61b02831826e1b1f46b41 upstream.
    
    This patch adds waiting until transmit buffer and shifter will be empty
    before clock disabling.
    
    Without this fix it's possible to have clock disabled while data was
    not transmited yet, which causes unproper state of TX line and problems
    in following data transfers.
    
    Signed-off-by: Robert Baldyga <r.baldyga@samsung.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 9de18f8e90f456277efe3310546069c30ec2f18e
Author: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
Date:   Fri Oct 24 21:19:57 2014 +0400

    mfd: tc6393xb: Fail ohci suspend if full state restore is required
    
    commit 1a5fb99de4850cba710d91becfa2c65653048589 upstream.
    
    Some boards with TC6393XB chip require full state restore during system
    resume thanks to chip's VCC being cut off during suspend (Sharp SL-6000
    tosa is one of them). Failing to do so would result in ohci Oops on
    resume due to internal memory contentes being changed. Fail ohci suspend
    on tc6393xb is full state restore is required.
    
    Recommended workaround is to unbind tmio-ohci driver before suspend and
    rebind it after resume.
    
    Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
    Signed-off-by: Lee Jones <lee.jones@linaro.org>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 300b82c92c02ca5ba393f6cd105eb2e4d4986b77
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Fri Nov 7 08:48:15 2014 -0800

    USB: cdc-acm: check for valid interfaces
    
    commit 403dff4e2c94f275e24fd85f40b2732ffec268a1 upstream.
    
    We need to check that we have both a valid data and control inteface for both
    types of headers (union and not union.)
    
    References: https://bugzilla.kernel.org/show_bug.cgi?id=83551
    Reported-by: Simon Schubert <2+kernel@0x2c.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit affd0637d5b1569ed8537b2bbe113da93e5ae734
Author: Oliver Neukum <oneukum@suse.de>
Date:   Thu Nov 20 14:54:35 2014 +0100

    cdc-acm: memory leak in error case
    
    commit d908f8478a8d18e66c80a12adb27764920c1f1ca upstream.
    
    If probe() fails not only the attributes need to be removed
    but also the memory freed.
    
    Reported-by: Ahmed Tamrawi <ahmedtamrawi@gmail.com>
    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 58bd20d3ec596eef0a00e1a96cb7cb4025a7c6da
Author: Sumit.Saxena@avagotech.com <Sumit.Saxena@avagotech.com>
Date:   Mon Nov 17 15:24:23 2014 +0530

    megaraid_sas: corrected return of wait_event from abort frame path
    
    commit 170c238701ec38b1829321b17c70671c101bac55 upstream.
    
    Corrected wait_event() call which was waiting for wrong completion
    status (0xFF).
    
    Signed-off-by: Sumit Saxena <sumit.saxena@avagotech.com>
    Signed-off-by: Kashyap Desai <kashyap.desai@avagotech.com>
    Reviewed-by: Tomas Henzl <thenzl@redhat.com>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 82da6058de522e65ff341e46dde9dbdcb1ffbe71
Author: Lars-Peter Clausen <lars@metafoo.de>
Date:   Wed Nov 19 18:29:02 2014 +0100

    ASoC: sigmadsp: Refuse to load firmware files with a non-supported version
    
    commit 50c0f21b42dd4cd02b51f82274f66912d9a7fa32 upstream.
    
    Make sure to check the version field of the firmware header to make sure to
    not accidentally try to parse a firmware file with a different layout.
    Trying to do so can result in loading invalid firmware code to the device.
    
    Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 45fdc587f1615d7fc4a318650c2bedc3c590f428
Author: Jens Axboe <axboe@fb.com>
Date:   Wed Nov 19 13:06:22 2014 -0700

    genhd: check for int overflow in disk_expand_part_tbl()
    
    commit 5fabcb4c33fe11c7e3afdf805fde26c1a54d0953 upstream.
    
    We can get here from blkdev_ioctl() -> blkpg_ioctl() -> add_partition()
    with a user passed in partno value. If we pass in 0x7fffffff, the
    new target in disk_expand_part_tbl() overflows the 'int' and we
    access beyond the end of ptbl->part[] and even write to it when we
    do the rcu_assign_pointer() to assign the new partition.
    
    Reported-by: David Ramos <daramos@stanford.edu>
    Signed-off-by: Jens Axboe <axboe@fb.com>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 47d90ff8a06e6b98612c0974f759d6f4549e716e
Author: Hannes Reinecke <hare@suse.de>
Date:   Thu Oct 30 09:44:36 2014 +0100

    scsi: correct return values for .eh_abort_handler implementations
    
    commit b6c92b7e0af575e2b8b05bdf33633cf9e1661cbf upstream.
    
    The .eh_abort_handler needs to return SUCCESS, FAILED, or
    FAST_IO_FAIL. So fixup all callers to adhere to this requirement.
    
    Reviewed-by: Robert Elliott <elliott@hp.com>
    Signed-off-by: Hannes Reinecke <hare@suse.de>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    [lizf: Backported to 3.4: drop changes to esas2r_main.c]
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 73837b3ae4fb51cd5d48c9230d1b0e627a50c160
Author: Myron Stowe <myron.stowe@redhat.com>
Date:   Thu Oct 30 11:54:37 2014 -0600

    PCI: Restore detection of read-only BARs
    
    commit 36e8164882ca6d3c41cb91e6f09a3ed236841f80 upstream.
    
    Commit 6ac665c63dca ("PCI: rewrite PCI BAR reading code") masked off
    low-order bits from 'l', but not from 'sz'.  Both are passed to pci_size(),
    which compares 'base == maxbase' to check for read-only BARs.  The masking
    of 'l' means that comparison will never be 'true', so the check for
    read-only BARs no longer works.
    
    Resolve this by also masking off the low-order bits of 'sz' before passing
    it into pci_size() as 'maxbase'.  With this change, pci_size() will once
    again catch the problems that have been encountered to date:
    
      - AGP aperture BAR of AMD-7xx host bridges: if the AGP window is
        disabled, this BAR is read-only and read as 0x00000008 [1]
    
      - BARs 0-4 of ALi IDE controllers can be non-zero and read-only [1]
    
      - Intel Sandy Bridge - Thermal Management Controller [8086:0103];
        BAR 0 returning 0xfed98004 [2]
    
      - Intel Xeon E5 v3/Core i7 Power Control Unit [8086:2fc0];
        Bar 0 returning 0x00001a [3]
    
    Link: [1] https://git.kernel.org/cgit/linux/kernel/git/tglx/history.git/commit/drivers/pci/probe.c?id=1307ef6621991f1c4bc3cec1b5a4ebd6fd3d66b9 ("PCI: probing read-only BARs" (pre-git))
    Link: [2] https://bugzilla.kernel.org/show_bug.cgi?id=43331
    Link: [3] https://bugzilla.kernel.org/show_bug.cgi?id=85991
    Reported-by: William Unruh <unruh@physics.ubc.ca>
    Reported-by: Martin Lucina <martin@lucina.net>
    Signed-off-by: Myron Stowe <myron.stowe@redhat.com>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    CC: Matthew Wilcox <willy@linux.intel.com>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit a2288455adaf8c9e4c3a77166910bd3e9756ec51
Author: Lars Ellenberg <lars.ellenberg@linbit.com>
Date:   Mon Nov 10 17:21:13 2014 +0100

    drbd: merge_bvec_fn: properly remap bvm->bi_bdev
    
    commit 3b9d35d744bb5139f9fed57f38c019bb8c7d351c upstream.
    
    This was not noticed for many years. Affects operation if
    md raid is used a backing device for DRBD.
    
    Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com>
    Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com>
    Signed-off-by: Jens Axboe <axboe@fb.com>
    [lizf: Backported to 3.4: s/device/mdev]
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 0a19cbabd8ec76490c2b9fc5f76d3cd1302e46cf
Author: Alex Williamson <alex.williamson@redhat.com>
Date:   Fri Oct 31 11:13:07 2014 -0600

    driver core: Fix unbalanced device reference in drivers_probe
    
    commit bb34cb6bbd287b57e955bc5cfd42fcde6aaca279 upstream.
    
    bus_find_device_by_name() acquires a device reference which is never
    released.  This results in an object leak, which on older kernels
    results in failure to release all resources of PCI devices.  libvirt
    uses drivers_probe to re-attach devices to the host after assignment
    and is therefore a common trigger for this leak.
    
    Example:
    
    # cd /sys/bus/pci/
    # dmesg -C
    # echo 1 > devices/0000\:01\:00.0/sriov_numvfs
    # echo 0 > devices/0000\:01\:00.0/sriov_numvfs
    # dmesg | grep 01:10
     pci 0000:01:10.0: [8086:10ca] type 00 class 0x020000
     kobject: '0000:01:10.0' (ffff8801d79cd0a8): kobject_add_internal: parent: '0000:00:01.0', set: 'devices'
     kobject: '0000:01:10.0' (ffff8801d79cd0a8): kobject_uevent_env
     kobject: '0000:01:10.0' (ffff8801d79cd0a8): fill_kobj_path: path = '/devices/pci0000:00/0000:00:01.0/0000:01:10.0'
     kobject: '0000:01:10.0' (ffff8801d79cd0a8): kobject_uevent_env
     kobject: '0000:01:10.0' (ffff8801d79cd0a8): fill_kobj_path: path = '/devices/pci0000:00/0000:00:01.0/0000:01:10.0'
     kobject: '0000:01:10.0' (ffff8801d79cd0a8): kobject_uevent_env
     kobject: '0000:01:10.0' (ffff8801d79cd0a8): fill_kobj_path: path = '/devices/pci0000:00/0000:00:01.0/0000:01:10.0'
     kobject: '0000:01:10.0' (ffff8801d79cd0a8): kobject_cleanup, parent           (null)
     kobject: '0000:01:10.0' (ffff8801d79cd0a8): calling ktype release
     kobject: '0000:01:10.0': free name
    
    [kobject freed as expected]
    
    # dmesg -C
    # echo 1 > devices/0000\:01\:00.0/sriov_numvfs
    # echo 0000:01:10.0 > drivers_probe
    # echo 0 > devices/0000\:01\:00.0/sriov_numvfs
    # dmesg | grep 01:10
     pci 0000:01:10.0: [8086:10ca] type 00 class 0x020000
     kobject: '0000:01:10.0' (ffff8801d79ce0a8): kobject_add_internal: parent: '0000:00:01.0', set: 'devices'
     kobject: '0000:01:10.0' (ffff8801d79ce0a8): kobject_uevent_env
     kobject: '0000:01:10.0' (ffff8801d79ce0a8): fill_kobj_path: path = '/devices/pci0000:00/0000:00:01.0/0000:01:10.0'
     kobject: '0000:01:10.0' (ffff8801d79ce0a8): kobject_uevent_env
     kobject: '0000:01:10.0' (ffff8801d79ce0a8): fill_kobj_path: path = '/devices/pci0000:00/0000:00:01.0/0000:01:10.0'
     kobject: '0000:01:10.0' (ffff8801d79ce0a8): kobject_uevent_env
     kobject: '0000:01:10.0' (ffff8801d79ce0a8): fill_kobj_path: path = '/devices/pci0000:00/0000:00:01.0/0000:01:10.0'
    
    [no free]
    
    Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit ca7b6a3e6cd7e94485e9f3e4da18706020a5bcec
Author: Richard Weinberger <richard@nod.at>
Date:   Mon Oct 27 00:46:11 2014 +0100

    UBI: Fix invalid vfree()
    
    commit f38aed975c0c3645bbdfc5ebe35726e64caaf588 upstream.
    
    The logic of vfree()'ing vol->upd_buf is tied to vol->updating.
    In ubi_start_update() vol->updating is set long before vmalloc()'ing
    vol->upd_buf. If we encounter a write failure in ubi_start_update()
    before vmalloc() the UBI device release function will try to vfree()
    vol->upd_buf because vol->updating is set.
    Fix this by allocating vol->upd_buf directly after setting vol->updating.
    
    Fixes:
    [   31.559338] UBI warning: vol_cdev_release: update of volume 2 not finished, volume is damaged
    [   31.559340] ------------[ cut here ]------------
    [   31.559343] WARNING: CPU: 1 PID: 2747 at mm/vmalloc.c:1446 __vunmap+0xe3/0x110()
    [   31.559344] Trying to vfree() nonexistent vm area (ffffc90001f2b000)
    [   31.559345] Modules linked in:
    [   31.565620]  0000000000000bba ffff88002a0cbdb0 ffffffff818f0497 ffff88003b9ba148
    [   31.566347]  ffff88002a0cbde0 ffffffff8156f515 ffff88003b9ba148 0000000000000bba
    [   31.567073]  0000000000000000 0000000000000000 ffff88002a0cbe88 ffffffff8156c10a
    [   31.567793] Call Trace:
    [   31.568034]  [<ffffffff818f0497>] dump_stack+0x4e/0x7a
    [   31.568510]  [<ffffffff8156f515>] ubi_io_write_vid_hdr+0x155/0x160
    [   31.569084]  [<ffffffff8156c10a>] ubi_eba_write_leb+0x23a/0x870
    [   31.569628]  [<ffffffff81569b36>] vol_cdev_write+0x226/0x380
    [   31.570155]  [<ffffffff81179265>] vfs_write+0xb5/0x1f0
    [   31.570627]  [<ffffffff81179f8a>] SyS_pwrite64+0x6a/0xa0
    [   31.571123]  [<ffffffff818fde12>] system_call_fastpath+0x16/0x1b
    
    Signed-off-by: Richard Weinberger <richard@nod.at>
    Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 6a2fa48e0120e72496c4245a6a972b3afadcf5ee
Author: Kazuya Mizuguchi <kazuya.mizuguchi.ks@renesas.com>
Date:   Tue Nov 4 10:05:42 2014 +0900

    usb: renesas_usbhs: gadget: fix NULL pointer dereference in ep_disable()
    
    commit 11432050f070810ba139d0226344eef120c3a559 upstream.
    
    This patch fixes an issue that the NULL pointer dereference happens
    when we uses g_audio driver. Since the g_audio driver will call
    usb_ep_disable() in afunc_set_alt() before it calls usb_ep_enable(),
    the uep->pipe of renesas usbhs driver will be NULL. So, this patch
    adds a condition to avoid the oops.
    
    Signed-off-by: Kazuya Mizuguchi <kazuya.mizuguchi.ks@renesas.com>
    Signed-off-by: Takeshi Kihara <takeshi.kihara.df@renesas.com>
    Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
    Fixes: 2f98382dc (usb: renesas_usbhs: Add Renesas USBHS Gadget)
    Signed-off-by: Felipe Balbi <balbi@ti.com>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit a6a93e455b97786412ceacfb60c8fcfd1e865fc8
Author: Tejun Heo <tj@kernel.org>
Date:   Fri Oct 24 15:38:21 2014 -0400

    writeback: fix a subtle race condition in I_DIRTY clearing
    
    commit 9c6ac78eb3521c5937b2dd8a7d1b300f41092f45 upstream.
    
    After invoking ->dirty_inode(), __mark_inode_dirty() does smp_mb() and
    tests inode->i_state locklessly to see whether it already has all the
    necessary I_DIRTY bits set.  The comment above the barrier doesn't
    contain any useful information - memory barriers can't ensure "changes
    are seen by all cpus" by itself.
    
    And it sure enough was broken.  Please consider the following
    scenario.
    
     CPU 0					CPU 1
     -------------------------------------------------------------------------------
    
    					enters __writeback_single_inode()
    					grabs inode->i_lock
    					tests PAGECACHE_TAG_DIRTY which is clear
     enters __set_page_dirty()
     grabs mapping->tree_lock
     sets PAGECACHE_TAG_DIRTY
     releases mapping->tree_lock
     leaves __set_page_dirty()
    
     enters __mark_inode_dirty()
     smp_mb()
     sees I_DIRTY_PAGES set
     leaves __mark_inode_dirty()
    					clears I_DIRTY_PAGES
    					releases inode->i_lock
    
    Now @inode has dirty pages w/ I_DIRTY_PAGES clear.  This doesn't seem
    to lead to an immediately critical problem because requeue_inode()
    later checks PAGECACHE_TAG_DIRTY instead of I_DIRTY_PAGES when
    deciding whether the inode needs to be requeued for IO and there are
    enough unintentional memory barriers inbetween, so while the inode
    ends up with inconsistent I_DIRTY_PAGES flag, it doesn't fall off the
    IO list.
    
    The lack of explicit barrier may also theoretically affect the other
    I_DIRTY bits which deal with metadata dirtiness.  There is no
    guarantee that a strong enough barrier exists between
    I_DIRTY_[DATA]SYNC clearing and write_inode() writing out the dirtied
    inode.  Filesystem inode writeout path likely has enough stuff which
    can behave as full barrier but it's theoretically possible that the
    writeout may not see all the updates from ->dirty_inode().
    
    Fix it by adding an explicit smp_mb() after I_DIRTY clearing.  Note
    that I_DIRTY_PAGES needs a special treatment as it always needs to be
    cleared to be interlocked with the lockless test on
    __mark_inode_dirty() side.  It's cleared unconditionally and
    reinstated after smp_mb() if the mapping still has dirty pages.
    
    Also add comments explaining how and why the barriers are paired.
    
    Lightly tested.
    
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Cc: Jan Kara <jack@suse.cz>
    Cc: Mikulas Patocka <mpatocka@redhat.com>
    Cc: Jens Axboe <axboe@kernel.dk>
    Cc: Al Viro <viro@zeniv.linux.org.uk>
    Reviewed-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Jens Axboe <axboe@fb.com>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 4dc54f7a72ad145f774ad78b4c0af12fc9ab28e0
Author: Jan Kara <jack@suse.cz>
Date:   Thu May 3 14:47:57 2012 +0200

    writeback: Move I_DIRTY_PAGES handling
    
    commit 6290be1c1dc6589eeda213aa40946b27fa4faac8 upstream.
    
    Instead of clearing I_DIRTY_PAGES and resetting it when we didn't succeed in
    writing them all, just clear the bit only when we succeeded writing all the
    pages. We also move the clearing of the bit close to other i_state handling to
    separate it from writeback list handling. This is desirable because list
    handling will differ for flusher thread and other writeback_single_inode()
    callers in future. No filesystem plays any tricks with I_DIRTY_PAGES (like
    checking it in ->writepages or ->write_inode implementation) so this movement
    is safe.
    
    Signed-off-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Fengguang Wu <fengguang.wu@intel.com>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 073b1bc26cdc00a47a6ee2eb52d757b3dd27ef28
Author: Tyler Hicks <tyhicks@canonical.com>
Date:   Tue Oct 7 15:51:55 2014 -0500

    eCryptfs: Force RO mount when encrypted view is enabled
    
    commit 332b122d39c9cbff8b799007a825d94b2e7c12f2 upstream.
    
    The ecryptfs_encrypted_view mount option greatly changes the
    functionality of an eCryptfs mount. Instead of encrypting and decrypting
    lower files, it provides a unified view of the encrypted files in the
    lower filesystem. The presence of the ecryptfs_encrypted_view mount
    option is intended to force a read-only mount and modifying files is not
    supported when the feature is in use. See the following commit for more
    information:
    
      e77a56d [PATCH] eCryptfs: Encrypted passthrough
    
    This patch forces the mount to be read-only when the
    ecryptfs_encrypted_view mount option is specified by setting the
    MS_RDONLY flag on the superblock. Additionally, this patch removes some
    broken logic in ecryptfs_open() that attempted to prevent modifications
    of files when the encrypted view feature was in use. The check in
    ecryptfs_open() was not sufficient to prevent file modifications using
    system calls that do not operate on a file descriptor.
    
    Signed-off-by: Tyler Hicks <tyhicks@canonical.com>
    Reported-by: Priya Bansal <p.bansal@samsung.com>
    [lizf: Backported to 3.4: adjust context]
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit a3b7e569c56240f1604ae499f9a9481cd1f2dece
Author: Grygorii Strashko <grygorii.strashko@ti.com>
Date:   Mon Dec 1 17:34:04 2014 +0200

    i2c: davinci: generate STP always when NACK is received
    
    commit 9ea359f7314132cbcb5a502d2d8ef095be1f45e4 upstream.
    
    According to I2C specification the NACK should be handled as follows:
    "When SDA remains HIGH during this ninth clock pulse, this is defined as the Not
    Acknowledge signal. The master can then generate either a STOP condition to
    abort the transfer, or a repeated START condition to start a new transfer."
    [I2C spec Rev. 6, 3.1.6: http://www.nxp.com/documents/user_manual/UM10204.pdf]
    
    Currently the Davinci i2c driver interrupts the transfer on receipt of a
    NACK but fails to send a STOP in some situations and so makes the bus
    stuck until next I2C IP reset (idle/enable).
    
    For example, the issue will happen during SMBus read transfer which
    consists from two i2c messages write command/address and read data:
    
    S Slave Address Wr A Command Code A Sr Slave Address Rd A D1..Dn A P
    <--- write -----------------------> <--- read --------------------->
    
    The I2C client device will send NACK if it can't recognize "Command Code"
    and it's expected from I2C master to generate STP in this case.
    But now, Davinci i2C driver will just exit with -EREMOTEIO and STP will
    not be generated.
    
    Hence, fix it by generating Stop condition (STP) always when NACK is received.
    
    This patch fixes Davinci I2C in the same way it was done for OMAP I2C
    commit cda2109a26eb ("i2c: omap: query STP always when NACK is received").
    
    Reviewed-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
    Reported-by: Hein Tibosch <hein_tibosch@yahoo.es>
    Signed-off-by: Grygorii Strashko <grygorii.strashko@ti.com>
    Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit aa01e324fdc18c371ef3fc206cc8909e13bdacf8
Author: Tejun Heo <tj@kernel.org>
Date:   Thu Dec 4 13:13:28 2014 -0500

    ahci: disable MSI on SAMSUNG 0xa800 SSD
    
    commit 2b21ef0aae65f22f5ba86b13c4588f6f0c2dbefb upstream.
    
    Just like 0x1600 which got blacklisted by 66a7cbc303f4 ("ahci: disable
    MSI instead of NCQ on Samsung pci-e SSDs on macbooks"), 0xa800 chokes
    on NCQ commands if MSI is enabled.  Disable MSI.
    
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Reported-by: Dominik Mierzejewski <dominik@greysector.net>
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=89171
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 1abb03dff04fd63a21c6d5f7ce887d98e8fd3099
Author: Tejun Heo <tj@kernel.org>
Date:   Mon Oct 27 10:22:56 2014 -0400

    ahci: disable MSI instead of NCQ on Samsung pci-e SSDs on macbooks
    
    commit 66a7cbc303f4d28f201529b06061944d51ab530c upstream.
    
    Samsung pci-e SSDs on macbooks failed miserably on NCQ commands, so
    67809f85d31e ("ahci: disable NCQ on Samsung pci-e SSDs on macbooks")
    disabled NCQ on them.  It turns out that NCQ is fine as long as MSI is
    not used, so let's turn off MSI and leave NCQ on.
    
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=60731
    Tested-by: <dorin@i51.org>
    Tested-by: Imre Kaloz <kaloz@openwrt.org>
    Fixes: 67809f85d31e ("ahci: disable NCQ on Samsung pci-e SSDs on macbooks")
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit ee2e72882f07a557d739955abbc87b5defc5f96d
Author: Levente Kurusa <levex@linux.com>
Date:   Tue Feb 18 10:22:17 2014 -0500

    ahci: disable NCQ on Samsung pci-e SSDs on macbooks
    
    commit 67809f85d31eac600f6b28defa5386c9d2a13b1d upstream.
    
    Samsung's pci-e SSDs with device ID 0x1600 which are found on some
    macbooks time out on NCQ commands.  Blacklist NCQ on the device so
    that the affected machines can at least boot.
    
    Original-patch-by: Levente Kurusa <levex@linux.com>
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=60731
    [lizf: Backported to 3.4: adjust context]
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 1a02d8726830be40d76a1cceb2eb0689613c678c
Author: Hugh Dickins <hughd@google.com>
Date:   Tue Dec 2 15:59:39 2014 -0800

    mm: fix swapoff hang after page migration and fork
    
    commit 2022b4d18a491a578218ce7a4eca8666db895a73 upstream.
    
    I've been seeing swapoff hangs in recent testing: it's cycling around
    trying unsuccessfully to find an mm for some remaining pages of swap.
    
    I have been exercising swap and page migration more heavily recently,
    and now notice a long-standing error in copy_one_pte(): it's trying to
    add dst_mm to swapoff's mmlist when it finds a swap entry, but is doing
    so even when it's a migration entry or an hwpoison entry.
    
    Which wouldn't matter much, except it adds dst_mm next to src_mm,
    assuming src_mm is already on the mmlist: which may not be so.  Then if
    pages are later swapped out from dst_mm, swapoff won't be able to find
    where to replace them.
    
    There's already a !non_swap_entry() test for stats: move that up before
    the swap_duplicate() and the addition to mmlist.
    
    Signed-off-by: Hugh Dickins <hughd@google.com>
    Cc: Kelley Nielsen <kelleynnn@gmail.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 9cc1941edd87e481fd27dd28f114ab8672c11c10
Author: Petr Mladek <pmladek@suse.cz>
Date:   Thu Nov 27 16:57:21 2014 +0100

    drm/radeon: kernel panic in drm_calc_vbltimestamp_from_scanoutpos with 3.18.0-rc6
    
    commit f5475cc43c899e33098d4db44b7c5e710f16589d upstream.
    
    I was unable too boot 3.18.0-rc6 because of the following kernel
    panic in drm_calc_vbltimestamp_from_scanoutpos():
    
        [drm] Initialized drm 1.1.0 20060810
        [drm] radeon kernel modesetting enabled.
        [drm] initializing kernel modesetting (RV100 0x1002:0x515E 0x15D9:0x8080).
        [drm] register mmio base: 0xC8400000
        [drm] register mmio size: 65536
        radeon 0000:0b:01.0: VRAM: 128M 0x00000000D0000000 - 0x00000000D7FFFFFF (16M used)
        radeon 0000:0b:01.0: GTT: 512M 0x00000000B0000000 - 0x00000000CFFFFFFF
        [drm] Detected VRAM RAM=128M, BAR=128M
        [drm] RAM width 16bits DDR
        [TTM] Zone  kernel: Available graphics memory: 3829346 kiB
        [TTM] Zone   dma32: Available graphics memory: 2097152 kiB
        [TTM] Initializing pool allocator
        [TTM] Initializing DMA pool allocator
        [drm] radeon: 16M of VRAM memory ready
        [drm] radeon: 512M of GTT memory ready.
        [drm] GART: num cpu pages 131072, num gpu pages 131072
        [drm] PCI GART of 512M enabled (table at 0x0000000037880000).
        radeon 0000:0b:01.0: WB disabled
        radeon 0000:0b:01.0: fence driver on ring 0 use gpu addr 0x00000000b0000000 and cpu addr 0xffff8800bbbfa000
        [drm] Supports vblank timestamp caching Rev 2 (21.10.2013).
        [drm] Driver supports precise vblank timestamp query.
        [drm] radeon: irq initialized.
        [drm] Loading R100 Microcode
        radeon 0000:0b:01.0: Direct firmware load for radeon/R100_cp.bin failed with error -2
        radeon_cp: Failed to load firmware "radeon/R100_cp.bin"
        [drm:r100_cp_init] *ERROR* Failed to load firmware!
        radeon 0000:0b:01.0: failed initializing CP (-2).
        radeon 0000:0b:01.0: Disabling GPU acceleration
        [drm] radeon: cp finalized
        BUG: unable to handle kernel NULL pointer dereference at 000000000000025c
        IP: [<ffffffff8150423b>] drm_calc_vbltimestamp_from_scanoutpos+0x4b/0x320
        PGD 0
        Oops: 0000 [#1] SMP
        Modules linked in:
        CPU: 1 PID: 1 Comm: swapper/0 Not tainted 3.18.0-rc6-4-default #2649
        Hardware name: Supermicro X7DB8/X7DB8, BIOS 6.00 07/26/2006
        task: ffff880234da2010 ti: ffff880234da4000 task.ti: ffff880234da4000
        RIP: 0010:[<ffffffff8150423b>]  [<ffffffff8150423b>] drm_calc_vbltimestamp_from_scanoutpos+0x4b/0x320
        RSP: 0000:ffff880234da7918  EFLAGS: 00010086
        RAX: ffffffff81557890 RBX: 0000000000000000 RCX: ffff880234da7a48
        RDX: ffff880234da79f4 RSI: 0000000000000000 RDI: ffff880232e15000
        RBP: ffff880234da79b8 R08: 0000000000000000 R09: 0000000000000000
        R10: 000000000000000a R11: 0000000000000001 R12: ffff880232dda1c0
        R13: ffff880232e1518c R14: 0000000000000292 R15: ffff880232e15000
        FS:  0000000000000000(0000) GS:ffff88023fc40000(0000) knlGS:0000000000000000
        CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b
        CR2: 000000000000025c CR3: 0000000002014000 CR4: 00000000000007e0
        Stack:
         ffff880234da79d8 0000000000000286 ffff880232dcbc00 0000000000002480
         ffff880234da7958 0000000000000296 ffff880234da7998 ffffffff8151b51d
         ffff880234da7a48 0000000032dcbeb0 ffff880232dcbc00 ffff880232dcbc58
        Call Trace:
         [<ffffffff8151b51d>] ? drm_vma_offset_remove+0x1d/0x110
         [<ffffffff8152dc98>] radeon_get_vblank_timestamp_kms+0x38/0x60
         [<ffffffff8152076a>] ? ttm_bo_release_list+0xba/0x180
         [<ffffffff81503751>] drm_get_last_vbltimestamp+0x41/0x70
         [<ffffffff81503933>] vblank_disable_and_save+0x73/0x1d0
         [<ffffffff81106b2f>] ? try_to_del_timer_sync+0x4f/0x70
         [<ffffffff81505245>] drm_vblank_cleanup+0x65/0xa0
         [<ffffffff815604fa>] radeon_irq_kms_fini+0x1a/0x70
         [<ffffffff8156c07e>] r100_init+0x26e/0x410
         [<ffffffff8152ae3e>] radeon_device_init+0x7ae/0xb50
         [<ffffffff8152d57f>] radeon_driver_load_kms+0x8f/0x210
         [<ffffffff81506965>] drm_dev_register+0xb5/0x110
         [<ffffffff8150998f>] drm_get_pci_dev+0x8f/0x200
         [<ffffffff815291cd>] radeon_pci_probe+0xad/0xe0
         [<ffffffff8141a365>] local_pci_probe+0x45/0xa0
         [<ffffffff8141b741>] pci_device_probe+0xd1/0x130
         [<ffffffff81633dad>] driver_probe_device+0x12d/0x3e0
         [<ffffffff8163413b>] __driver_attach+0x9b/0xa0
         [<ffffffff816340a0>] ? __device_attach+0x40/0x40
         [<ffffffff81631cd3>] bus_for_each_dev+0x63/0xa0
         [<ffffffff8163378e>] driver_attach+0x1e/0x20
         [<ffffffff81633390>] bus_add_driver+0x180/0x240
         [<ffffffff81634914>] driver_register+0x64/0xf0
         [<ffffffff81419cac>] __pci_register_driver+0x4c/0x50
         [<ffffffff81509bf5>] drm_pci_init+0xf5/0x120
         [<ffffffff821dc871>] ? ttm_init+0x6a/0x6a
         [<ffffffff821dc908>] radeon_init+0x97/0xb5
         [<ffffffff810002fc>] do_one_initcall+0xbc/0x1f0
         [<ffffffff810e3278>] ? __wake_up+0x48/0x60
         [<ffffffff8218e256>] kernel_init_freeable+0x18a/0x215
         [<ffffffff8218d983>] ? initcall_blacklist+0xc0/0xc0
         [<ffffffff818a78f0>] ? rest_init+0x80/0x80
         [<ffffffff818a78fe>] kernel_init+0xe/0xf0
         [<ffffffff818c0c3c>] ret_from_fork+0x7c/0xb0
         [<ffffffff818a78f0>] ? rest_init+0x80/0x80
        Code: 45 ac 0f 88 a8 01 00 00 3b b7 d0 01 00 00 49 89 ff 0f 83 99 01 00 00 48 8b 47 20 48 8b 80 88 00 00 00 48 85 c0 0f 84 cd 01 00 00 <41> 8b b1 5c 02 00 00 41 8b 89 58 02 00 00 89 75 98 41 8b b1 60
        RIP  [<ffffffff8150423b>] drm_calc_vbltimestamp_from_scanoutpos+0x4b/0x320
         RSP <ffff880234da7918>
        CR2: 000000000000025c
        ---[ end trace ad2c0aadf48e2032 ]---
        Kernel panic - not syncing: Attempted to kill init! exitcode=0x00000009
    
    It has helped me to add a NULL pointer check that was suggested at
    http://lists.freedesktop.org/archives/dri-devel/2014-October/070663.html
    
    I am not familiar with the code. But the change looks sane
    and we need something fast at this stage of 3.18 development.
    
    Suggested-by: Helge Deller <deller@gmx.de>
    Signed-off-by: Petr Mladek <pmladek@suse.cz>
    Tested-by: Petr Mladek <pmladek@suse.cz>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 00646dbf051c999f3c19dccc585c135ab2bbc6c3
Author: Dmitry Torokhov <dtor@chromium.org>
Date:   Fri Nov 14 13:39:05 2014 -0800

    sata_fsl: fix error handling of irq_of_parse_and_map
    
    commit aad0b624129709c94c2e19e583b6053520353fa8 upstream.
    
    irq_of_parse_and_map() returns 0 on error (the result is unsigned int),
    so testing for negative result never works.
    
    Signed-off-by: Dmitry Torokhov <dtor@chromium.org>
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 1c84f5cc85de9ec44481d8113da636fcb21b6728
Author: Devin Ryles <devin.ryles@intel.com>
Date:   Fri Nov 7 17:59:05 2014 -0500

    AHCI: Add DeviceIDs for Sunrise Point-LP SATA controller
    
    commit 249cd0a187ed4ef1d0af7f74362cc2791ec5581b upstream.
    
    This patch adds DeviceIDs for Sunrise Point-LP.
    
    Signed-off-by: Devin Ryles <devin.ryles@intel.com>
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 558ab6ce908a98d6fa73041fda646fc172b7dd19
Author: Daniel Vetter <daniel.vetter@ffwll.ch>
Date:   Mon Dec 1 17:56:54 2014 +0100

    drm/i915: Unlock panel even when LVDS is disabled
    
    commit b0616c5306b342ceca07044dbc4f917d95c4f825 upstream.
    
    Otherwise we'll have backtraces in assert_panel_unlocked because the
    BIOS locks the register. In the reporter's case this regression was
    introduced in
    
    commit c31407a3672aaebb4acddf90944a114fa5c8af7b
    Author: Chris Wilson <chris@chris-wilson.co.uk>
    Date:   Thu Oct 18 21:07:01 2012 +0100
    
        drm/i915: Add no-lvds quirk for Supermicro X7SPA-H
    
    Reported-by: Alexey Orishko <alexey.orishko@gmail.com>
    Cc: Alexey Orishko <alexey.orishko@gmail.com>
    Cc: Chris Wilson <chris@chris-wilson.co.uk>
    Cc: Francois Tigeot <ftigeot@wolfpond.org>
    Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
    Tested-by: Alexey Orishko <alexey.orishko@gmail.com>
    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 445237120ff03fd0e2fabca1c3867a3c3765fda1
Author: Laurent Dufour <ldufour@linux.vnet.ibm.com>
Date:   Mon Nov 24 15:07:53 2014 +0100

    powerpc/pseries: Fix endiannes issue in RTAS call from xmon
    
    commit 3b8a3c01096925a824ed3272601082289d9c23a5 upstream.
    
    On pseries system (LPAR) xmon failed to enter when running in LE mode,
    system is hunging. Inititating xmon will lead to such an output on the
    console:
    
    SysRq : Entering xmon
    cpu 0x15: Vector: 0  at [c0000003f39ffb10]
        pc: c00000000007ed7c: sysrq_handle_xmon+0x5c/0x70
        lr: c00000000007ed7c: sysrq_handle_xmon+0x5c/0x70
        sp: c0000003f39ffc70
       msr: 8000000000009033
      current = 0xc0000003fafa7180
      paca    = 0xc000000007d75e80	 softe: 0	 irq_happened: 0x01
        pid   = 14617, comm = bash
    Bad kernel stack pointer fafb4b0 at eca7cc4
    cpu 0x15: Vector: 300 (Data Access) at [c000000007f07d40]
        pc: 000000000eca7cc4
        lr: 000000000eca7c44
        sp: fafb4b0
       msr: 8000000000001000
       dar: 10000000
     dsisr: 42000000
      current = 0xc0000003fafa7180
      paca    = 0xc000000007d75e80	 softe: 0	 irq_happened: 0x01
        pid   = 14617, comm = bash
    cpu 0x15: Exception 300 (Data Access) in xmon, returning to main loop
    xmon: WARNING: bad recursive fault on cpu 0x15
    
    The root cause is that xmon is calling RTAS to turn off the surveillance
    when entering xmon, and RTAS is requiring big endian parameters.
    
    This patch is byte swapping the RTAS arguments when running in LE mode.
    
    Signed-off-by: Laurent Dufour <ldufour@linux.vnet.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 267817fd992efefb99ba204849a226373a087092
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Tue Nov 25 00:38:17 2014 -0800

    Input: xpad - use proper endpoint type
    
    commit a1f9a4072655843fc03186acbad65990cc05dd2d upstream.
    
    The xpad wireless endpoint is not a bulk endpoint on my devices, but
    rather an interrupt one, so the USB core complains when it is submitted.
    I'm guessing that the author really did mean that this should be an
    interrupt urb, but as there are a zillion different xpad devices out
    there, let's cover out bases and handle both bulk and interrupt
    endpoints just as easily.
    
    Signed-off-by: "Pierre-Loup A. Griffais" <pgriffais@valvesoftware.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit f225c5260d960b8fb4f35a88552990356552e46f
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Mon Nov 24 11:22:38 2014 +0100

    usb-quirks: Add reset-resume quirk for MS Wireless Laser Mouse 6000
    
    commit 263e80b43559a6103e178a9176938ce171b23872 upstream.
    
    This wireless mouse receiver needs a reset-resume quirk to properly come
    out of reset.
    
    BugLink: https://bugzilla.redhat.com/show_bug.cgi?id=1165206
    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 984541bd0ff35f6b93fab8146ebf2c92dc835108
Author: Aaro Koskinen <aaro.koskinen@iki.fi>
Date:   Thu Nov 20 01:05:38 2014 +0200

    MIPS: Loongson: Make platform serial setup always built-in.
    
    commit 26927f76499849e095714452b8a4e09350f6a3b9 upstream.
    
    If SERIAL_8250 is compiled as a module, the platform specific setup
    for Loongson will be a module too, and it will not work very well.
    At least on Loongson 3 it will trigger a build failure,
    since loongson_sysconf is not exported to modules.
    
    Fix by making the platform specific serial code always built-in.
    
    Signed-off-by: Aaro Koskinen <aaro.koskinen@iki.fi>
    Reported-by: Ralf Baechle <ralf@linux-mips.org>
    Cc: linux-mips@linux-mips.org
    Cc: Huacai Chen <chenhc@lemote.com>
    Cc: Markos Chandras <Markos.Chandras@imgtec.com>
    Patchwork: https://patchwork.linux-mips.org/patch/8533/
    Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit e39abe89dcdc27a24ce218d6a69c99326e622ead
Author: Takashi Iwai <tiwai@suse.de>
Date:   Wed Oct 1 10:30:53 2014 +0200

    ALSA: hda - Limit 40bit DMA for AMD HDMI controllers
    
    commit 413cbf469a19e7662ba5025695bf5a573927105a upstream.
    
    AMD/ATI HDMI controller chip models, we already have a filter to lower
    to 32bit DMA, but the rest are supposed to be working with 64bit
    although the hardware doesn't really work with 63bit but only with 40
    or 48bit DMA.  In this patch, we take 40bit DMA for safety for the
    AMD/ATI controllers as the graphics drivers does.
    
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
    [lizf: Backported to 3.4:
     - adjust context
     - s/AZX_GCAP_640K/ICH6_GCAP_64OK]
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 8143ad28290452ac7b628eadae73f5c4164cec5d
Author: Lu Baolu <baolu.lu@linux.intel.com>
Date:   Tue Nov 18 11:27:14 2014 +0200

    usb: xhci: rework root port wake bits if controller isn't allowed to wakeup
    
    commit a1377e5397ab321e21b793ec8cd2b6f12bd3c718 upstream.
    
    When system is being suspended, if host device is not allowed to do wakeup,
    xhci_suspend() needs to clear all root port wake on bits. Otherwise, some
    platforms may generate spurious wakeup, even if PCI PME# is disabled.
    
    The initial commit ff8cbf250b44 ("xhci: clear root port wake on bits"),
    which also got into stable, turned out to not work correctly and had to
    be reverted, and is now rewritten.
    
    Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com>
    Suggested-by: Alan Stern <stern@rowland.harvard.edu>
    Acked-by: Alan Stern <stern@rowland.harvard.edu>
    [Mathias Nyman: reword commit message]
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    [lizf: Backported to 3.4:
     - adjust context
     - drop changes to xhci_plat_suspend()]
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 991182b96557810df14a74fe7f4f4f15765afe98
Author: Mathias Nyman <mathias.nyman@linux.intel.com>
Date:   Tue Nov 18 11:27:12 2014 +0200

    USB: xhci: Reset a halted endpoint immediately when we encounter a stall.
    
    commit 8e71a322fdb127814bcba423a512914ca5bc6cf5 upstream.
    
    If a device is halted and reuturns a STALL, then the halted endpoint
    needs to be cleared both on the host and device side. The host
    side halt is cleared by issueing a xhci reset endpoint command. The device side
    is cleared with a ClearFeature(ENDPOINT_HALT) request, which should
    be issued by the device driver if a URB reruen -EPIPE.
    
    Previously we cleared the host side halt after the device side was cleared.
    To make sure the host side halt is cleared in time we want to issue the
    reset endpoint command immedialtely when a STALL status is encountered.
    
    Otherwise we end up not following the specs and not returning -EPIPE
    several times in a row when trying to transfer data to a halted endpoint.
    
    Fixes: bcef3fd (USB: xhci: Handle errors that cause endpoint halts.)
    Tested-by: Felipe Balbi <balbi@ti.com>
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.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 a3d7be959d2eabb53164669a4a8db3175dc31f44
Author: Mathias Nyman <mathias.nyman@linux.intel.com>
Date:   Tue Nov 18 11:27:11 2014 +0200

    USB: xhci: don't start a halted endpoint before its new dequeue is set
    
    commit c3492dbfa1050debf23a5b5cd2bc7514c5b37896 upstream.
    
    A halted endpoint ring must first be reset, then move the ring
    dequeue pointer past the problematic TRB. If we start the ring too
    early after reset, but before moving the dequeue pointer we
    will end up executing the same problematic TRB again.
    
    As we always issue a set transfer dequeue command after a reset
    endpoint command we can skip starting endpoint rings at reset endpoint
    command completion.
    
    Without this fix we end up trying to handle the same faulty TD for
    contol endpoints. causing timeout, and failing testusb ctrl_out write
    tests.
    
    Fixes: e9df17e (USB: xhci: Correct assumptions about number of rings per endpoint.)
    Tested-by: Felipe Balbi <balbi@ti.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 185a096967b248fd8a87d4a0546794204a49dd11
Author: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
Date:   Fri Nov 21 15:29:00 2014 +0100

    ARM: 8216/1: xscale: correct auxiliary register in suspend/resume
    
    commit ef59a20ba375aeb97b3150a118318884743452a8 upstream.
    
    According to the manuals I have, XScale auxiliary register should be
    reached with opc_2 = 1 instead of crn = 1. cpu_xscale_proc_init
    correctly uses c1, c0, 1 arguments, but cpu_xscale_do_suspend and
    cpu_xscale_do_resume use c1, c1, 0. Correct suspend/resume functions to
    also use c1, c0, 1.
    
    The issue was primarily noticed thanks to qemu reporing "unsupported
    instruction" on the pxa suspend path. Confirmed in PXA210/250 and PXA255
    XScale Core manuals and in PXA270 and PXA320 Developers Guides.
    
    Harware tested by me on tosa (pxa255). Robert confirmed on pxa270 board.
    
    Tested-by: Robert Jarzmik <robert.jarzmik@free.fr>
    Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
    Acked-by: Robert Jarzmik <robert.jarzmik@free.fr>
    Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 5398d2a626d68c9f916326d50c127895b338ef13
Author: Maurizio Lombardi <mlombard@redhat.com>
Date:   Thu Nov 20 11:17:33 2014 +0100

    bnx2fc: do not add shared skbs to the fcoe_rx_list
    
    commit 01a4cc4d0cd6a836c7b923760e8eb1cbb6a47258 upstream.
    
    In some cases, the fcoe_rx_list may contains multiple instances
    of the same skb (the so called "shared skbs").
    
    the bnx2fc_l2_rcv thread is a loop that extracts a skb from the list,
    modifies (and destroys) its content and then proceed to the next one.
    The problem is that if the skb is shared, the remaining instances will
    be corrupted.
    
    The solution is to use skb_share_check() before adding the skb to the
    fcoe_rx_list.
    
    [ 6286.808725] ------------[ cut here ]------------
    [ 6286.808729] WARNING: at include/scsi/fc_frame.h:173 bnx2fc_l2_rcv_thread+0x425/0x450 [bnx2fc]()
    [ 6286.808748] Modules linked in: bnx2x(-) mdio dm_service_time bnx2fc cnic uio fcoe libfcoe 8021q garp stp mrp libfc llc scsi_transport_fc scsi_tgt sg iTCO_wdt iTCO_vendor_support coretemp kvm_intel kvm crct10dif_pclmul crc32_pclmul crc32c_intel e1000e ghash_clmulni_intel aesni_intel lrw gf128mul glue_helper ablk_helper ptp cryptd hpilo serio_raw hpwdt lpc_ich pps_core ipmi_si pcspkr mfd_core ipmi_msghandler shpchp pcc_cpufreq mperf nfsd auth_rpcgss nfs_acl lockd sunrpc dm_multipath xfs libcrc32c ata_generic pata_acpi sd_mod crc_t10dif crct10dif_common mgag200 syscopyarea sysfillrect sysimgblt i2c_algo_bit ata_piix drm_kms_helper ttm drm libata i2c_core hpsa dm_mirror dm_region_hash dm_log dm_mod [last unloaded: mdio]
    [ 6286.808750] CPU: 3 PID: 1304 Comm: bnx2fc_l2_threa Not tainted 3.10.0-121.el7.x86_64 #1
    [ 6286.808750] Hardware name: HP ProLiant DL120 G7, BIOS J01 07/01/2013
    [ 6286.808752]  0000000000000000 000000000b36e715 ffff8800deba1e00 ffffffff815ec0ba
    [ 6286.808753]  ffff8800deba1e38 ffffffff8105dee1 ffffffffa05618c0 ffff8801e4c81888
    [ 6286.808754]  ffffe8ffff663868 ffff8801f402b180 ffff8801f56bc000 ffff8800deba1e48
    [ 6286.808754] Call Trace:
    [ 6286.808759]  [<ffffffff815ec0ba>] dump_stack+0x19/0x1b
    [ 6286.808762]  [<ffffffff8105dee1>] warn_slowpath_common+0x61/0x80
    [ 6286.808763]  [<ffffffff8105e00a>] warn_slowpath_null+0x1a/0x20
    [ 6286.808765]  [<ffffffffa054f415>] bnx2fc_l2_rcv_thread+0x425/0x450 [bnx2fc]
    [ 6286.808767]  [<ffffffffa054eff0>] ? bnx2fc_disable+0x90/0x90 [bnx2fc]
    [ 6286.808769]  [<ffffffff81085aef>] kthread+0xcf/0xe0
    [ 6286.808770]  [<ffffffff81085a20>] ? kthread_create_on_node+0x140/0x140
    [ 6286.808772]  [<ffffffff815fc76c>] ret_from_fork+0x7c/0xb0
    [ 6286.808773]  [<ffffffff81085a20>] ? kthread_create_on_node+0x140/0x140
    [ 6286.808774] ---[ end trace c6cdb939184ccb4e ]---
    
    Signed-off-by: Maurizio Lombardi <mlombard@redhat.com>
    Acked-by: Chad Dupuis <chad.dupuis@qlogic.com>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit b198b71168a4739627d5e2c763153a8c9c618a2f
Author: Trond Myklebust <trond.myklebust@primarydata.com>
Date:   Wed Nov 19 12:47:50 2014 -0500

    nfsd: Fix slot wake up race in the nfsv4.1 callback code
    
    commit c6c15e1ed303ffc47e696ea1c9a9df1761c1f603 upstream.
    
    The currect code for nfsd41_cb_get_slot() and nfsd4_cb_done() has no
    locking in order to guarantee atomicity, and so allows for races of
    the form.
    
    Task 1                                  Task 2
    ======                                  ======
    if (test_and_set_bit(0) != 0) {
                                            clear_bit(0)
                                            rpc_wake_up_next(queue)
            rpc_sleep_on(queue)
            return false;
    }
    
    This patch breaks the race condition by adding a retest of the bit
    after the call to rpc_sleep_on().
    
    Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
    Signed-off-by: J. Bruce Fields <bfields@redhat.com>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 63ed3573ab1611645f6b15e6622b718b6bf6082c
Author: Trond Myklebust <trond.myklebust@primarydata.com>
Date:   Wed Nov 12 18:04:04 2014 -0500

    SUNRPC: Fix locking around callback channel reply receive
    
    commit 093a1468b6edb0e568be7311b8d2228d205702db upstream.
    
    Both xprt_lookup_rqst() and xprt_complete_rqst() require that you
    take the transport lock in order to avoid races with xprt_transmit().
    
    Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
    Reviewed-by: Jeff Layton <jlayton@primarydata.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 7167d3360126aba157f25708fbd567e66e1a8deb
Author: Johan Hovold <johan@kernel.org>
Date:   Tue Nov 18 11:25:21 2014 +0100

    USB: ssu100: fix overrun-error reporting
    
    commit 75bcbf29c284dd0154c3e895a0bd1ef0e796160e upstream.
    
    Fix reporting of overrun errors, which should only be reported once
    using the inserted null character.
    
    Fixes: 6b8f1ca5581b ("USB: ssu100: set tty_flags in ssu100_process_packet")
    Signed-off-by: Johan Hovold <johan@kernel.org>
    [lizf: Backported to 3.4:
     - adjust context
     - lookup tty using tty_port_tty_get()]
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 1fb787ce35c51cdd788eab6ef968b6313e931fcd
Author: Johan Hovold <johan@kernel.org>
Date:   Tue Nov 18 11:25:20 2014 +0100

    USB: keyspan: fix overrun-error reporting
    
    commit 855515a6d3731242d85850a206f2ec084c917338 upstream.
    
    Fix reporting of overrun errors, which are not associated with a
    character. Instead insert a null character and report only once.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Johan Hovold <johan@kernel.org>
    [lizf: Backported to 3.4:
     - s/&port->port/tty
     - adjust context
     - adjust indentation]
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 3b8a7019833e3733d10f2add33fd03018bf3fe64
Author: Johan Hovold <johan@kernel.org>
Date:   Tue Nov 18 11:25:19 2014 +0100

    USB: keyspan: fix tty line-status reporting
    
    commit 5d1678a33c731b56e245e888fdae5e88efce0997 upstream.
    
    Fix handling of TTY error flags, which are not bitmasks and must
    specifically not be ORed together as this prevents the line discipline
    from recognising them.
    
    Also insert null characters when reporting overrun errors as these are
    not associated with the received character.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Johan Hovold <johan@kernel.org>
    [lizf: Backported to 3.4:
     - s/&port->port/tty/
     - adjust context
     - adjust indentation]
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 0ff23ffd3bb21c11c6cd105ddaad373bf7414523
Author: Troy Clark <tclark@matrixorbital.ca>
Date:   Mon Nov 17 14:33:17 2014 -0800

    usb: serial: ftdi_sio: add PIDs for Matrix Orbital products
    
    commit 204ec6e07ea7aff863df0f7c53301f9cbbfbb9d3 upstream.
    
    Add PIDs for new Matrix Orbital GTT series products.
    
    Signed-off-by: Troy Clark <tclark@matrixorbital.ca>
    [johan: shorten commit message ]
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit e1962953875c97e898c818eddb4b1bbb2cdc9a01
Author: Cristina Ciocan <cristina.ciocan@intel.com>
Date:   Tue Nov 11 16:07:42 2014 +0200

    iio: Fix IIO_EVENT_CODE_EXTRACT_DIR bit mask
    
    commit ccf54555da9a5e91e454b909ca6a5303c7d6b910 upstream.
    
    The direction field is set on 7 bits, thus we need to AND it with 0111 111 mask
    in order to retrieve it, that is 0x7F, not 0xCF as it is now.
    
    Fixes: ade7ef7ba (staging:iio: Differential channel handling)
    Signed-off-by: Cristina Ciocan <cristina.ciocan@intel.com>
    Signed-off-by: Jonathan Cameron <jic23@kernel.org>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit f3234664145be98b3703dcaaefedb64cb61924e9
Author: Preston Fick <pffick@gmail.com>
Date:   Fri Nov 7 23:26:11 2014 -0600

    USB: serial: cp210x: add IDs for CEL MeshConnect USB Stick
    
    commit ffcfe30ebd8dd703d0fc4324ffe56ea21f5479f4 upstream.
    
    Signed-off-by: Preston Fick <pffick@gmail.com>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit c5298dc5db701713904ecd3e06be9de4d16796ee
Author: Thor Thayer <tthayer@opensource.altera.com>
Date:   Thu Nov 6 13:54:27 2014 -0600

    spi: dw: Fix dynamic speed change.
    
    commit 0a8727e69778683495058852f783eeda141a754e upstream.
    
    An IOCTL call that calls spi_setup() and then dw_spi_setup() will
    overwrite the persisted last transfer speed. On each transfer, the
    SPI speed is compared to the last transfer speed to determine if the
    clock divider registers need to be updated (did the speed change?).
    This bug was observed with the spidev driver using spi-config to
    update the max transfer speed.
    
    This fix: Don't overwrite the persisted last transaction clock speed
    when updating the SPI parameters in dw_spi_setup(). On the next
    transaction, the new speed won't match the persisted last speed
    and the hardware registers will be updated.
    On initialization, the persisted last transaction clock
    speed will be 0 but will be updated after the first SPI
    transaction.
    
    Move zeroed clock divider check into clock change test because
    chip->clk_div is zero on startup and would cause a divide-by-zero
    error. The calculation was wrong as well (can't support odd #).
    
    Reported-by: Vlastimil Setka <setka@vsis.cz>
    Signed-off-by: Vlastimil Setka <setka@vsis.cz>
    Signed-off-by: Thor Thayer <tthayer@opensource.altera.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Zefan Li <lizefan@huawei.com>