commit bbae7add628cfe96a1facd578dd1eddcd1030de7
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Mon Jun 30 20:12:08 2014 -0700

    Linux 3.14.10

commit 6d646b4de65b8eccad37b20be955c547fa66806c
Author: Andrzej Zaborowski <andrew.zaborowski@intel.com>
Date:   Mon Jun 9 16:50:40 2014 +0200

    efi-pstore: Fix an overflow on 32-bit builds
    
    commit 783ee43118dc773bc8b0342c5b230e017d5a04d0 upstream.
    
    In generic_id the long int timestamp is multiplied by 100000 and needs
    an explicit cast to u64.
    
    Without that the id in the resulting pstore filename is wrong and
    userspace may have problems parsing it, but more importantly files in
    pstore can never be deleted and may fill the EFI flash (brick device?).
    This happens because when generic pstore code wants to delete a file,
    it passes the id to the EFI backend which reinterpretes it and a wrong
    variable name is attempted to be deleted.  There's no error message but
    after remounting pstore, deleted files would reappear.
    
    Signed-off-by: Andrew Zaborowski <andrew.zaborowski@intel.com>
    Acked-by: David Rientjes <rientjes@google.com>
    Signed-off-by: Matt Fleming <matt.fleming@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bf695f730888a9f2f325245f730e6df508b112f9
Author: Fathi Boudra <fathi.boudra@linaro.org>
Date:   Sat Apr 12 13:13:24 2014 +0300

    builddeb: use $OBJCOPY variable instead of objcopy
    
    commit 6b4a144a92ab81a1f45fb9b12aebaaaee0d08120 upstream.
    
    In cross-build environment, we expect to use the cross-compiler objcopy
    instead of the host objcopy.
    
    It fixes following build failures:
    objcopy --only-keep-debug lib/modules/3.14/kernel/net/ipv6/xfrm6_mode_tunnel.ko /srv/build/linux/debian/dbgtmp/usr/lib/debug/lib/modules/3.14/kernel/net/ipv6/xfrm6_mode_tunnel.ko
    objcopy: Unable to recognise the format of the input file `lib/modules/3.14/kernel/net/ipv6/xfrm6_mode_tunnel.ko'
    
    Signed-off-by: Fathi Boudra <fathi.boudra@linaro.org>
    Fixes: 810e843746b7 ('deb-pkg: split debug symbols in their own package')
    Reviewed-by: Ben Hutchings <ben@decadent.org.uk>
    Signed-off-by: Michal Marek <mmarek@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b0d3f527adbe90799e10000a0c59e88f0174bfaf
Author: Konstantin Khlebnikov <koct9i@gmail.com>
Date:   Tue Jun 17 06:58:05 2014 +0400

    epoll: fix use-after-free in eventpoll_release_file
    
    commit ebe06187bf2aec10d537ce4595e416035367d703 upstream.
    
    This fixes use-after-free of epi->fllink.next inside list loop macro.
    This loop actually releases elements in the body.  The list is
    rcu-protected but here we cannot hold rcu_read_lock because we need to
    lock mutex inside.
    
    The obvious solution is to use list_for_each_entry_safe().  RCU-ness
    isn't essential because nobody can change this list under us, it's final
    fput for this file.
    
    The bug was introduced by ae10b2b4eb01 ("epoll: optimize EPOLL_CTL_DEL
    using rcu")
    
    Signed-off-by: Konstantin Khlebnikov <koct9i@gmail.com>
    Reported-by: Cyrill Gorcunov <gorcunov@openvz.org>
    Cc: Sasha Levin <sasha.levin@oracle.com>
    Cc: Jason Baron <jbaron@akamai.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b83627d417975fa8681344384ac55a1c4751f55f
Author: Andy Lutomirski <luto@amacapital.net>
Date:   Mon Jun 23 14:22:15 2014 -0700

    x86_32, entry: Do syscall exit work on badsys (CVE-2014-4508)
    
    commit 554086d85e71f30abe46fc014fea31929a7c6a8a upstream.
    
    The bad syscall nr paths are their own incomprehensible route
    through the entry control flow.  Rearrange them to work just like
    syscalls that return -ENOSYS.
    
    This fixes an OOPS in the audit code when fast-path auditing is
    enabled and sysenter gets a bad syscall nr (CVE-2014-4508).
    
    This has probably been broken since Linux 2.6.27:
    af0575bba0 i386 syscall audit fast-path
    
    Cc: Roland McGrath <roland@redhat.com>
    Reported-by: Toralf Förster <toralf.foerster@gmx.de>
    Signed-off-by: Andy Lutomirski <luto@amacapital.net>
    Link: http://lkml.kernel.org/r/e09c499eade6fc321266dd6b54da7beb28d6991c.1403558229.git.luto@amacapital.net
    Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 08a2da50340b0f829c27800c67782566093b5543
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Tue Jun 24 16:59:01 2014 -0400

    lz4: fix another possible overrun
    
    commit 4148c1f67abf823099b2d7db6851e4aea407f5ee upstream.
    
    There is one other possible overrun in the lz4 code as implemented by
    Linux at this point in time (which differs from the upstream lz4
    codebase, but will get synced at in a future kernel release.)  As
    pointed out by Don, we also need to check the overflow in the data
    itself.
    
    While we are at it, replace the odd error return value with just a
    "simple" -1 value as the return value is never used for anything other
    than a basic "did this work or not" check.
    
    Reported-by: "Don A. Bailey" <donb@securitymouse.com>
    Reported-by: Willy Tarreau <w@1wt.eu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9e22eb8c724a00c0d51f4c0d144c48bd0d108bd2
Author: Jeff Mahoney <jeffm@suse.com>
Date:   Tue May 27 12:59:57 2014 -0400

    btrfs: allocate raid type kobjects dynamically
    
    commit c1895442be01c58449e3bf9272f22062a670e08f upstream.
    
    We are currently allocating space_info objects in an array when we
    allocate space_info. When a user does something like:
    
    # btrfs balance start -mconvert=raid1 -dconvert=raid1 /mnt
    # btrfs balance start -mconvert=single -dconvert=single /mnt -f
    # btrfs balance start -mconvert=raid1 -dconvert=raid1 /
    
    We can end up with memory corruption since the kobject hasn't
    been reinitialized properly and the name pointer was left set.
    
    The rationale behind allocating them statically was to avoid
    creating a separate kobject container that just contained the
    raid type. It used the index in the array to determine the index.
    
    Ultimately, though, this wastes more memory than it saves in all
    but the most complex scenarios and introduces kobject lifetime
    questions.
    
    This patch allocates the kobjects dynamically instead. Note that
    we also remove the kobject_get/put of the parent kobject since
    kobject_add and kobject_del do that internally.
    
    Signed-off-by: Jeff Mahoney <jeffm@suse.com>
    Reported-by: David Sterba <dsterba@suse.cz>
    Signed-off-by: Chris Mason <clm@fb.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f59f14e214d8b3e0779fde70dabed4586e144fd8
Author: Jeff Mahoney <jeffm@suse.com>
Date:   Wed Mar 26 14:11:26 2014 -0400

    btrfs: fix lockdep warning with reclaim lock inversion
    
    commit ed55b6ac077fe7f9c6490ff55172c4b563562d7c upstream.
    
    When encountering memory pressure, testers have run into the following
    lockdep warning. It was caused by __link_block_group calling kobject_add
    with the groups_sem held. kobject_add calls kvasprintf with GFP_KERNEL,
    which gets us into reclaim context. The kobject doesn't actually need
    to be added under the lock -- it just needs to ensure that it's only
    added for the first block group to be linked.
    
    =========================================================
    [ INFO: possible irq lock inversion dependency detected ]
    3.14.0-rc8-default #1 Not tainted
    ---------------------------------------------------------
    kswapd0/169 just changed the state of lock:
     (&delayed_node->mutex){+.+.-.}, at: [<ffffffffa018baea>] __btrfs_release_delayed_node+0x3a/0x200 [btrfs]
    but this lock took another, RECLAIM_FS-unsafe lock in the past:
     (&found->groups_sem){+++++.}
    
    and interrupts could create inverse lock ordering between them.
    
    other info that might help us debug this:
     Possible interrupt unsafe locking scenario:
           CPU0                    CPU1
           ----                    ----
      lock(&found->groups_sem);
                                   local_irq_disable();
                                   lock(&delayed_node->mutex);
                                   lock(&found->groups_sem);
      <Interrupt>
        lock(&delayed_node->mutex);
    
     *** DEADLOCK ***
    2 locks held by kswapd0/169:
     #0:  (shrinker_rwsem){++++..}, at: [<ffffffff81159e8a>] shrink_slab+0x3a/0x160
     #1:  (&type->s_umount_key#27){++++..}, at: [<ffffffff811bac6f>] grab_super_passive+0x3f/0x90
    
    Signed-off-by: Jeff Mahoney <jeffm@suse.com>
    Signed-off-by: Chris Mason <clm@fb.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fe79ac25b6727012ca89de85b8008e1e07db4978
Author: Eric Sandeen <sandeen@redhat.com>
Date:   Thu Jun 12 00:39:58 2014 -0500

    btrfs: fix use of uninit "ret" in end_extent_writepage()
    
    commit 3e2426bd0eb980648449e7a2f5a23e3cd3c7725c upstream.
    
    If this condition in end_extent_writepage() is false:
    
    	if (tree->ops && tree->ops->writepage_end_io_hook)
    
    we will then test an uninitialized "ret" at:
    
    	ret = ret < 0 ? ret : -EIO;
    
    The test for ret is for the case where ->writepage_end_io_hook
    failed, and we'd choose that ret as the error; but if
    there is no ->writepage_end_io_hook, nothing sets ret.
    
    Initializing ret to 0 should be sufficient; if
    writepage_end_io_hook wasn't set, (!uptodate) means
    non-zero err was passed in, so we choose -EIO in that case.
    
    Signed-of-by: Eric Sandeen <sandeen@redhat.com>
    
    Signed-off-by: Chris Mason <clm@fb.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 75f93474507a99f8be8000cb0f33a60d488298d4
Author: Liu Bo <bo.li.liu@oracle.com>
Date:   Mon Jun 9 10:54:07 2014 +0800

    Btrfs: fix scrub_print_warning to handle skinny metadata extents
    
    commit 6eda71d0c030af0fc2f68aaa676e6d445600855b upstream.
    
    The skinny extents are intepreted incorrectly in scrub_print_warning(),
    and end up hitting the BUG() in btrfs_extent_inline_ref_size.
    
    Reported-by: Konstantinos Skarlatos <k.skarlatos@gmail.com>
    Signed-off-by: Liu Bo <bo.li.liu@oracle.com>
    Signed-off-by: Chris Mason <clm@fb.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4f850fdfbb90c57178e24e9e6c9fc32d18cc23e1
Author: Liu Bo <bo.li.liu@oracle.com>
Date:   Sun Jun 8 19:04:13 2014 +0800

    Btrfs: use right type to get real comparison
    
    commit cd857dd6bc2ae9ecea14e75a34e8a8fdc158e307 upstream.
    
    We want to make sure the point is still within the extent item, not to verify
    the memory it's pointing to.
    
    Signed-off-by: Liu Bo <bo.li.liu@oracle.com>
    Signed-off-by: Chris Mason <clm@fb.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6858c106c6a0eaa458423b223154b0baf4450e03
Author: Josef Bacik <jbacik@fb.com>
Date:   Thu Jun 5 16:08:45 2014 -0400

    Btrfs: don't check nodes for extent items
    
    commit 8a56457f5f8fa7c2698ffae8545214c5b96a2cb5 upstream.
    
    The backref code was looking at nodes as well as leaves when we tried to
    populate extent item entries.  This is not good, and although we go away with it
    for the most part because we'd skip where disk_bytenr != random_memory,
    sometimes random_memory would match and suddenly boom.  This fixes that problem.
    Thanks,
    
    Signed-off-by: Josef Bacik <jbacik@fb.com>
    Signed-off-by: Chris Mason <clm@fb.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3379d704fb52e2e989fb3c6f0bdf1d5e74387cb1
Author: Rickard Strandqvist <rickard_strandqvist@spectrumdigital.se>
Date:   Thu May 22 22:43:43 2014 +0200

    fs: btrfs: volumes.c: Fix for possible null pointer dereference
    
    commit 8321cf2596d283821acc466377c2b85bcd3422b7 upstream.
    
    There is otherwise a risk of a possible null pointer dereference.
    
    Was largely found by using a static code analysis program called cppcheck.
    
    Signed-off-by: Rickard Strandqvist <rickard_strandqvist@spectrumdigital.se>
    Signed-off-by: Chris Mason <clm@fb.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a6729cd10108988ad206e826293be76047140695
Author: Filipe Manana <fdmanana@gmail.com>
Date:   Sun May 25 04:49:24 2014 +0100

    Btrfs: send, don't error in the presence of subvols/snapshots
    
    commit 1af56070e3ef9477dbc7eba3b9ad7446979c7974 upstream.
    
    If we are doing an incremental send and the base snapshot has a
    directory with name X that doesn't exist anymore in the second
    snapshot and a new subvolume/snapshot exists in the second snapshot
    that has the same name as the directory (name X), the incremental
    send would fail with -ENOENT error. This is because it attempts
    to lookup for an inode with a number matching the objectid of a
    root, which doesn't exist.
    
    Steps to reproduce:
    
        mkfs.btrfs -f /dev/sdd
        mount /dev/sdd /mnt
    
        mkdir /mnt/testdir
        btrfs subvolume snapshot -r /mnt /mnt/mysnap1
    
        rmdir /mnt/testdir
        btrfs subvolume create /mnt/testdir
        btrfs subvolume snapshot -r /mnt /mnt/mysnap2
    
        btrfs send -p /mnt/mysnap1 /mnt/mysnap2 -f /tmp/send.data
    
    A test case for xfstests follows.
    
    Reported-by: Robert White <rwhite@pobox.com>
    Signed-off-by: Filipe David Borba Manana <fdmanana@gmail.com>
    Signed-off-by: Chris Mason <clm@fb.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0da608d5f9df9385c2afbb7534d39e557328f6da
Author: Wang Shilong <wangsl.fnst@cn.fujitsu.com>
Date:   Tue May 13 17:05:06 2014 +0800

    Btrfs: set right total device count for seeding support
    
    commit 298658414a2f0bea1f05a81876a45c1cd96aa2e0 upstream.
    
    Seeding device support allows us to create a new filesystem
    based on existed filesystem.
    
    However newly created filesystem's @total_devices should include seed
    devices. This patch fix the following problem:
    
     # mkfs.btrfs -f /dev/sdb
     # btrfstune -S 1 /dev/sdb
     # mount /dev/sdb /mnt
     # btrfs device add -f /dev/sdc /mnt --->fs_devices->total_devices = 1
     # umount /mnt
     # mount /dev/sdc /mnt               --->fs_devices->total_devices = 2
    
    This is because we record right @total_devices in superblock, but
    @fs_devices->total_devices is reset to be 0 in btrfs_prepare_sprout().
    
    Fix this problem by not resetting @fs_devices->total_devices.
    
    Signed-off-by: Wang Shilong <wangsl.fnst@cn.fujitsu.com>
    Signed-off-by: Chris Mason <clm@fb.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9ec61f8c4a60efc4ffb0364da124a774a1553f4e
Author: Liu Bo <bo.li.liu@oracle.com>
Date:   Mon May 12 12:47:36 2014 +0800

    Btrfs: mark mapping with error flag to report errors to userspace
    
    commit 5dca6eea91653e9949ce6eb9e9acab6277e2f2c4 upstream.
    
    According to commit 865ffef3797da2cac85b3354b5b6050dc9660978
    (fs: fix fsync() error reporting),
    it's not stable to just check error pages because pages can be
    truncated or invalidated, we should also mark mapping with error
    flag so that a later fsync can catch the error.
    
    Signed-off-by: Liu Bo <bo.li.liu@oracle.com>
    Signed-off-by: Chris Mason <clm@fb.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ba9ea146601ca8d387d451089b18d12321330f4f
Author: Liu Bo <bo.li.liu@oracle.com>
Date:   Sun May 11 23:14:59 2014 +0800

    Btrfs: fix NULL pointer crash of deleting a seed device
    
    commit 29cc83f69c8338ff8fd1383c9be263d4bdf52d73 upstream.
    
    Same as normal devices, seed devices should be initialized with
    fs_info->dev_root as well, otherwise we'll get a NULL pointer crash.
    
    Cc: Chris Murphy <lists@colorremedies.com>
    Reported-by: Chris Murphy <lists@colorremedies.com>
    Signed-off-by: Liu Bo <bo.li.liu@oracle.com>
    Signed-off-by: Chris Mason <clm@fb.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a9142eca7be86f00db4c504d16adba29fdbbe287
Author: Wang Shilong <wangsl.fnst@cn.fujitsu.com>
Date:   Wed Apr 9 19:23:22 2014 +0800

    Btrfs: make sure there are not any read requests before stopping workers
    
    commit de348ee022175401e77d7662b7ca6e231a94e3fd upstream.
    
    In close_ctree(), after we have stopped all workers,there maybe still
    some read requests(for example readahead) to submit and this *maybe* trigger
    an oops that user reported before:
    
    kernel BUG at fs/btrfs/async-thread.c:619!
    
    By hacking codes, i can reproduce this problem with one cpu available.
    We fix this potential problem by invalidating all btree inode pages before
    stopping all workers.
    
    Thanks to Miao for pointing out this problem.
    
    Signed-off-by: Wang Shilong <wangsl.fnst@cn.fujitsu.com>
    Reviewed-by: David Sterba <dsterba@suse.cz>
    Signed-off-by: Chris Mason <clm@fb.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0ebcffd71421584531a44643de7f363dcc139635
Author: Miao Xie <miaox@cn.fujitsu.com>
Date:   Thu Apr 24 13:31:55 2014 +0800

    Btrfs: output warning instead of error when loading free space cache failed
    
    commit 32d6b47fe6fc1714d5f1bba1b9f38e0ab0ad58a8 upstream.
    
    If we fail to load a free space cache, we can rebuild it from the extent tree,
    so it is not a serious error, we should not output a error message that
    would make the users uncomfortable. This patch uses warning message instead
    of it.
    
    Signed-off-by: Miao Xie <miaox@cn.fujitsu.com>
    Signed-off-by: Chris Mason <clm@fb.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b36fe043d15b301bacd1530e2687398cc24720a5
Author: Qu Wenruo <quwenruo@cn.fujitsu.com>
Date:   Wed Apr 16 17:02:32 2014 +0800

    btrfs: Add ctime/mtime update for btrfs device add/remove.
    
    commit 5a1972bd9fd4b2fb1bac8b7a0b636d633d8717e3 upstream.
    
    Btrfs will send uevent to udev inform the device change,
    but ctime/mtime for the block device inode is not udpated, which cause
    libblkid used by btrfs-progs unable to detect device change and use old
    cache, causing 'btrfs dev scan; btrfs dev rmove; btrfs dev scan' give an
    error message.
    
    Reported-by: Tsutomu Itoh <t-itoh@jp.fujitsu.com>
    Cc: Karel Zak <kzak@redhat.com>
    Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
    Signed-off-by: Chris Mason <clm@fb.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9ed3912c6855efe2f68b90d76e0c91a9c525ab71
Author: Chris Mason <clm@fb.com>
Date:   Wed May 21 05:49:54 2014 -0700

    Btrfs: fix double free in find_lock_delalloc_range
    
    commit 7d78874273463a784759916fc3e0b4e2eb141c70 upstream.
    
    We need to NULL the cached_state after freeing it, otherwise
    we might free it again if find_delalloc_range doesn't find anything.
    
    Signed-off-by: Chris Mason <clm@fb.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3899510979e555166e0b13060a54a0b449674d22
Author: Pavel Shilovsky <pshilovsky@samba.org>
Date:   Sat May 24 16:42:02 2014 +0400

    CIFS: Fix memory leaks in SMB2_open
    
    commit 663a962151593c69374776e8651238d0da072459 upstream.
    
    Signed-off-by: Pavel Shilovsky <pshilovsky@samba.org>
    Reviewed-by: Shirish Pargaonkar <spargaonkar@suse.com>
    Signed-off-by: Steve French <smfrench@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit aa011e29c725b391e614ee7babe6f890a00e3fc5
Author: Benjamin LaHaise <bcrl@kvack.org>
Date:   Tue Jun 24 13:32:51 2014 -0400

    aio: fix kernel memory disclosure in io_getevents() introduced in v3.10
    
    commit edfbbf388f293d70bf4b7c0bc38774d05e6f711a upstream.
    
    A kernel memory disclosure was introduced in aio_read_events_ring() in v3.10
    by commit a31ad380bed817aa25f8830ad23e1a0480fef797.  The changes made to
    aio_read_events_ring() failed to correctly limit the index into
    ctx->ring_pages[], allowing an attacked to cause the subsequent kmap() of
    an arbitrary page with a copy_to_user() to copy the contents into userspace.
    This vulnerability has been assigned CVE-2014-0206.  Thanks to Mateusz and
    Petr for disclosing this issue.
    
    This patch applies to v3.12+.  A separate backport is needed for 3.10/3.11.
    
    Signed-off-by: Benjamin LaHaise <bcrl@kvack.org>
    Cc: Mateusz Guzik <mguzik@redhat.com>
    Cc: Petr Matousek <pmatouse@redhat.com>
    Cc: Kent Overstreet <kmo@daterainc.com>
    Cc: Jeff Moyer <jmoyer@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b0c60b4efb13a8b1b37288c9acada13019739d92
Author: Benjamin LaHaise <bcrl@kvack.org>
Date:   Tue Jun 24 13:12:55 2014 -0400

    aio: fix aio request leak when events are reaped by userspace
    
    commit f8567a3845ac05bb28f3c1b478ef752762bd39ef upstream.
    
    The aio cleanups and optimizations by kmo that were merged into the 3.10
    tree added a regression for userspace event reaping.  Specifically, the
    reference counts are not decremented if the event is reaped in userspace,
    leading to the application being unable to submit further aio requests.
    This patch applies to 3.12+.  A separate backport is required for 3.10/3.11.
    This issue was uncovered as part of CVE-2014-0206.
    
    Signed-off-by: Benjamin LaHaise <bcrl@kvack.org>
    Cc: Kent Overstreet <kmo@daterainc.com>
    Cc: Mateusz Guzik <mguzik@redhat.com>
    Cc: Petr Matousek <pmatouse@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cc40a2916d3f2c7495410385bae08cfd58192071
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Thu Mar 7 14:53:45 2013 +0100

    genirq: Sanitize spurious interrupt detection of threaded irqs
    
    commit 1e77d0a1ed7417d2a5a52a7b8d32aea1833faa6c upstream.
    
    Till reported that the spurious interrupt detection of threaded
    interrupts is broken in two ways:
    
    - note_interrupt() is called for each action thread of a shared
      interrupt line. That's wrong as we are only interested whether none
      of the device drivers felt responsible for the interrupt, but by
      calling multiple times for a single interrupt line we account
      IRQ_NONE even if one of the drivers felt responsible.
    
    - note_interrupt() when called from the thread handler is not
      serialized. That leaves the members of irq_desc which are used for
      the spurious detection unprotected.
    
    To solve this we need to defer the spurious detection of a threaded
    interrupt to the next hardware interrupt context where we have
    implicit serialization.
    
    If note_interrupt is called with action_ret == IRQ_WAKE_THREAD, we
    check whether the previous interrupt requested a deferred check. If
    not, we request a deferred check for the next hardware interrupt and
    return.
    
    If set, we check whether one of the interrupt threads signaled
    success. Depending on this information we feed the result into the
    spurious detector.
    
    If one primary handler of a shared interrupt returns IRQ_HANDLED we
    disable the deferred check of irq threads on the same line, as we have
    found at least one device driver who cared.
    
    Reported-by: Till Straumann <strauman@slac.stanford.edu>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Tested-by: Austin Schuh <austin@peloton-tech.com>
    Cc: Oliver Hartkopp <socketcan@hartkopp.net>
    Cc: Wolfgang Grandegger <wg@grandegger.com>
    Cc: Pavel Pisa <pisa@cmp.felk.cvut.cz>
    Cc: Marc Kleine-Budde <mkl@pengutronix.de>
    Cc: linux-can@vger.kernel.org
    Link: http://lkml.kernel.org/r/alpine.LFD.2.02.1303071450130.22263@ionos
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6c9f4bad982d855e86e66b895dfec4d1ee0d59be
Author: Mike Frysinger <vapier@gentoo.org>
Date:   Sun May 4 20:43:15 2014 -0400

    x86, x32: Use compat shims for io_{setup,submit}
    
    commit 7fd44dacdd803c0bbf38bf478d51d280902bb0f1 upstream.
    
    The io_setup takes a pointer to a context id of type aio_context_t.
    This in turn is typed to a __kernel_ulong_t.  We could tweak the
    exported headers to define this as a 64bit quantity for specific
    ABIs, but since we already have a 32bit compat shim for the x86 ABI,
    let's just re-use that logic.  The libaio package is also written to
    expect this as a pointer type, so a compat shim would simplify that.
    
    The io_submit func operates on an array of pointers to iocb structs.
    Padding out the array to be 64bit aligned is a huge pain, so convert
    it over to the existing compat shim too.
    
    We don't convert io_getevents to the compat func as its only purpose
    is to handle the timespec struct, and the x32 ABI uses 64bit times.
    
    With this change, the libaio package can now pass its testsuite when
    built for the x32 ABI.
    
    Signed-off-by: Mike Frysinger <vapier@gentoo.org>
    Link: http://lkml.kernel.org/r/1399250595-5005-1-git-send-email-vapier@gentoo.org
    Cc: H.J. Lu <hjl.tools@gmail.com>
    Signed-off-by: H. Peter Anvin <hpa@zytor.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e996baa13029c4cb76c36055f762ea16c4e47d94
Author: H. Peter Anvin <hpa@linux.intel.com>
Date:   Wed Apr 30 14:03:25 2014 -0700

    x86-32, espfix: Remove filter for espfix32 due to race
    
    commit 246f2d2ee1d715e1077fc47d61c394569c8ee692 upstream.
    
    It is not safe to use LAR to filter when to go down the espfix path,
    because the LDT is per-process (rather than per-thread) and another
    thread might change the descriptors behind our back.  Fortunately it
    is always *safe* (if a bit slow) to go down the espfix path, and a
    32-bit LDT stack segment is extremely rare.
    
    Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
    Link: http://lkml.kernel.org/r/1398816946-3351-1-git-send-email-hpa@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 71d5df86e7a6b077c3085cd9912eb96e155aa8e0
Author: Suravee Suthikulpanit <Suravee.Suthikulpanit@amd.com>
Date:   Fri Jun 6 23:07:16 2014 +0100

    arm64/dma: Removing ARCH_HAS_DMA_GET_REQUIRED_MASK macro
    
    commit f3a183cb422574014538017b5b291a416396f97e upstream.
    
    Arm64 does not define dma_get_required_mask() function.
    Therefore, it should not define the ARCH_HAS_DMA_GET_REQUIRED_MASK.
    This causes build errors in some device drivers (e.g. mpt2sas)
    
    Signed-off-by: Suravee Suthikulpanit <Suravee.Suthikulpanit@amd.com>
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 736422ac58eb011b8a7e5298e5bb2400d30e6a51
Author: Jason Cooper <jason@lakedaemon.net>
Date:   Wed Jun 4 13:41:20 2014 +0000

    ARM: mvebu: DT: fix OpenBlocks AX3-4 RAM size
    
    commit e47043aea3853a74a9aa5726a1faa916d7462ab7 upstream.
    
    The OpenBlocks AX3-4 has a non-DT bootloader.  It also comes with 1GB of
    soldered on RAM, and a DIMM slot for expansion.
    
    Unfortunately, atags_to_fdt() doesn't work in big-endian mode, so we see
    the following failure when attempting to boot a big-endian kernel:
    
      686 slab pages
      17 pages shared
      0 pages swap cached
      [ pid ]   uid  tgid total_vm      rss nr_ptes swapents oom_score_adj name
      Kernel panic - not syncing: Out of memory and no killable processes...
    
      CPU: 1 PID: 351 Comm: kworker/u4:0 Not tainted 3.15.0-rc8-next-20140603 #1
      [<c0215a54>] (unwind_backtrace) from [<c021160c>] (show_stack+0x10/0x14)
      [<c021160c>] (show_stack) from [<c0802500>] (dump_stack+0x78/0x94)
      [<c0802500>] (dump_stack) from [<c0800068>] (panic+0x90/0x21c)
      [<c0800068>] (panic) from [<c02b5704>] (out_of_memory+0x320/0x340)
      [<c02b5704>] (out_of_memory) from [<c02b93a0>] (__alloc_pages_nodemask+0x874/0x930)
      [<c02b93a0>] (__alloc_pages_nodemask) from [<c02d446c>] (handle_mm_fault+0x744/0x96c)
      [<c02d446c>] (handle_mm_fault) from [<c02cf250>] (__get_user_pages+0xd0/0x4c0)
      [<c02cf250>] (__get_user_pages) from [<c02f3598>] (get_arg_page+0x54/0xbc)
      [<c02f3598>] (get_arg_page) from [<c02f3878>] (copy_strings+0x278/0x29c)
      [<c02f3878>] (copy_strings) from [<c02f38bc>] (copy_strings_kernel+0x20/0x28)
      [<c02f38bc>] (copy_strings_kernel) from [<c02f4f1c>] (do_execve+0x3a8/0x4c8)
      [<c02f4f1c>] (do_execve) from [<c025ac10>] (____call_usermodehelper+0x15c/0x194)
      [<c025ac10>] (____call_usermodehelper) from [<c020e9b8>] (ret_from_fork+0x14/0x3c)
      CPU0: stopping
      CPU: 0 PID: 0 Comm: swapper/0 Not tainted 3.15.0-rc8-next-20140603 #1
      [<c0215a54>] (unwind_backtrace) from [<c021160c>] (show_stack+0x10/0x14)
      [<c021160c>] (show_stack) from [<c0802500>] (dump_stack+0x78/0x94)
      [<c0802500>] (dump_stack) from [<c021429c>] (handle_IPI+0x138/0x174)
      [<c021429c>] (handle_IPI) from [<c02087f0>] (armada_370_xp_handle_irq+0xb0/0xcc)
      [<c02087f0>] (armada_370_xp_handle_irq) from [<c0212100>] (__irq_svc+0x40/0x50)
      Exception stack(0xc0b6bf68 to 0xc0b6bfb0)
      bf60:                   e9fad598 00000000 00f509a3 00000000 c0b6a000 c0b724c4
      bf80: c0b72458 c0b6a000 00000000 00000000 c0b66da0 c0b6a000 00000000 c0b6bfb0
      bfa0: c027bb94 c027bb24 60000313 ffffffff
      [<c0212100>] (__irq_svc) from [<c027bb24>] (cpu_startup_entry+0x54/0x214)
      [<c027bb24>] (cpu_startup_entry) from [<c0ac5b30>] (start_kernel+0x318/0x37c)
      [<c0ac5b30>] (start_kernel) from [<00208078>] (0x208078)
      ---[ end Kernel panic - not syncing: Out of memory and no killable processes...
    
    A similar failure will also occur if ARM_ATAG_DTB_COMPAT isn't selected.
    
    Fix this by setting a sane default (1 GB) in the dts file.
    
    Signed-off-by: Jason Cooper <jason@lakedaemon.net>
    Tested-by: Kevin Hilman <khilman@linaro.org>
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4166c8b2ef2267465ba3381cd8cdb8d4c3bc9f3b
Author: James Bottomley <JBottomley@Parallels.com>
Date:   Fri Mar 28 10:50:17 2014 -0700

    SCSI: Fix spurious request sense in error handling
    
    commit d555a2abf3481f81303d835046a5ec2c4fb3ca8e upstream.
    
    We unconditionally execute scsi_eh_get_sense() to make sure all failed
    commands that should have sense attached, do.  However, the routine forgets
    that some commands, because of the way they fail, will not have any sense code
    ... we should not bother them with a REQUEST_SENSE command.  Fix this by
    testing to see if we actually got a CHECK_CONDITION return and skip asking for
    sense if we don't.
    
    Tested-by: Alan Stern <stern@rowland.harvard.edu>
    Signed-off-by: James Bottomley <JBottomley@Parallels.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8a550bb5fc37bfc5d2bd345b3062e49b82bd0bac
Author: Nicholas A. Bellinger <nab@linux-iscsi.org>
Date:   Mon Jun 16 20:59:52 2014 +0000

    target: Explicitly clear ramdisk_mcp backend pages
    
    [Note that a different patch to address the same issue went in during
    v3.15-rc1 (commit 4442dc8a), but includes a bunch of other changes that
    don't strictly apply to fixing the bug]
    
    This patch changes rd_allocate_sgl_table() to explicitly clear
    ramdisk_mcp backend memory pages by passing __GFP_ZERO into
    alloc_pages().
    
    This addresses a potential security issue where reading from a
    ramdisk_mcp could return sensitive information, and follows what
    >= v3.15 does to explicitly clear ramdisk_mcp memory at backend
    device initialization time.
    
    Reported-by: Jorge Daniel Sequeira Matias <jdsm@tecnico.ulisboa.pt>
    Cc: Jorge Daniel Sequeira Matias <jdsm@tecnico.ulisboa.pt>
    Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9a7f545e75cef29dbdc4c585f3ae27c5f7f4ea48
Author: Roland Dreier <roland@purestorage.com>
Date:   Tue Jun 10 11:07:47 2014 -0700

    target: Report correct response length for some commands
    
    commit 2426bd456a61407388b6e61fc5f98dbcbebc50e2 upstream.
    
    When an initiator sends an allocation length bigger than what its
    command consumes, the target should only return the actual response data
    and set the residual length to the unused part of the allocation length.
    
    Add a helper function that command handlers (INQUIRY, READ CAPACITY,
    etc) can use to do this correctly, and use this code to get the correct
    residual for commands that don't use the full initiator allocation in the
    handlers for READ CAPACITY, READ CAPACITY(16), INQUIRY, MODE SENSE and
    REPORT LUNS.
    
    This addresses a handful of failures as reported by Christophe with
    the Windows Certification Kit:
    
      http://permalink.gmane.org/gmane.linux.scsi.target.devel/6515
    
    Signed-off-by: Roland Dreier <roland@purestorage.com>
    Tested-by: Christophe Vu-Brugier <cvubrugier@yahoo.fr>
    Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 66b5814126946624a66258c0c2fad3b7e78d7bad
Author: Sagi Grimberg <sagig@mellanox.com>
Date:   Tue Jun 10 18:27:59 2014 +0300

    Target/iscsi: Fix sendtargets response pdu for iser transport
    
    commit 22c7aaa57e80853b4904a46c18f97db0036a3b97 upstream.
    
    In case the transport is iser we should not include the
    iscsi target info in the sendtargets text response pdu.
    This causes sendtargets response to include the target
    info twice.
    
    Modify iscsit_build_sendtargets_response to filter
    transport types that don't match.
    
    Signed-off-by: Sagi Grimberg <sagig@mellanox.com>
    Reported-by: Slava Shwartsman <valyushash@gmail.com>
    Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a689f31e5332814090a07048285055971df1289f
Author: Nicholas Bellinger <nab@linux-iscsi.org>
Date:   Tue Jun 10 04:03:54 2014 +0000

    iscsi-target: Fix ABORT_TASK + connection reset iscsi_queue_req memory leak
    
    commit bbc050488525e1ab1194c27355f63c66814385b8 upstream.
    
    This patch fixes a iscsi_queue_req memory leak when ABORT_TASK response
    has been queued by TFO->queue_tm_rsp() -> lio_queue_tm_rsp() after a
    long standing I/O completes, but the connection has already reset and
    waiting for cleanup to complete in iscsit_release_commands_from_conn()
    -> transport_generic_free_cmd() -> transport_wait_for_tasks() code.
    
    It moves iscsit_free_queue_reqs_for_conn() after the per-connection command
    list has been released, so that the associated se_cmd tag can be completed +
    released by target-core before freeing any remaining iscsi_queue_req memory
    for the connection generated by lio_queue_tm_rsp().
    
    Cc: Thomas Glanzmann <thomas@glanzmann.de>
    Cc: Charalampos Pournaris <charpour@gmail.com>
    Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e7a5dc06baf4bc53efa1496821d24953c4636cb4
Author: Nicholas Bellinger <nab@linux-iscsi.org>
Date:   Mon Jun 9 23:36:51 2014 +0000

    target: Use complete_all for se_cmd->t_transport_stop_comp
    
    commit a95d6511303b848da45ee27b35018bb58087bdc6 upstream.
    
    This patch fixes a bug where multiple waiters on ->t_transport_stop_comp
    occurs due to a concurrent ABORT_TASK and session reset both invoking
    transport_wait_for_tasks(), while waiting for the associated se_cmd
    descriptor backend processing to complete.
    
    For this case, complete_all() should be invoked in order to wake up
    both waiters in core_tmr_abort_task() + transport_generic_free_cmd()
    process contexts.
    
    Cc: Thomas Glanzmann <thomas@glanzmann.de>
    Cc: Charalampos Pournaris <charpour@gmail.com>
    Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bf7caca1f32d6fc1671a435345896d73aa136051
Author: Nicholas Bellinger <nab@linux-iscsi.org>
Date:   Mon Jun 9 23:13:20 2014 +0000

    target: Set CMD_T_ACTIVE bit for Task Management Requests
    
    commit f15e9cd910c4d9da7de43f2181f362082fc45f0f upstream.
    
    This patch fixes a bug where se_cmd descriptors associated with a
    Task Management Request (TMR) where not setting CMD_T_ACTIVE before
    being dispatched into target_tmr_work() process context.
    
    This is required in order for transport_generic_free_cmd() ->
    transport_wait_for_tasks() to wait on se_cmd->t_transport_stop_comp
    if a session reset event occurs while an ABORT_TASK is outstanding
    waiting for another I/O to complete.
    
    Cc: Thomas Glanzmann <thomas@glanzmann.de>
    Cc: Charalampos Pournaris <charpour@gmail.com>
    Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c75a5476ee099f5534402c6b42d34c89f7acb31c
Author: Sagi Grimberg <sagig@mellanox.com>
Date:   Mon May 19 17:44:25 2014 +0300

    Target/iser: Wait for proper cleanup before unloading
    
    commit f5ebec9629cf78eeeea4b8258882a9f439ab2404 upstream.
    
    disconnected_handler works are scheduled on system_wq.
    When attempting to unload, first make sure all works
    have cleaned up.
    
    Signed-off-by: Sagi Grimberg <sagig@mellanox.com>
    Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 555470b4c5fd168bebf2f758bc727dca9ca8af69
Author: Sagi Grimberg <sagig@mellanox.com>
Date:   Mon May 19 17:44:24 2014 +0300

    Target/iser: Improve cm events handling
    
    commit 88c4015fda6d014392f76d3b1688347950d7a12d upstream.
    
    There are 4 RDMA_CM events that all basically mean that
    the user should teardown the IB connection:
    - DISCONNECTED
    - ADDR_CHANGE
    - DEVICE_REMOVAL
    - TIMEWAIT_EXIT
    
    Only in DISCONNECTED/ADDR_CHANGE it makes sense to
    call rdma_disconnect (send DREQ/DREP to our initiator).
    So we keep the same teardown handler for all of them
    but only indicate calling rdma_disconnect for the relevant
    events.
    
    This patch also removes redundant debug prints for each single
    event.
    
    v2 changes:
     - Call isert_disconnected_handler() for DEVICE_REMOVAL (Or + Sag)
    
    Signed-off-by: Sagi Grimberg <sagig@mellanox.com>
    Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 35eceed62f3b9977c9dc7e9f122faef8379f873a
Author: Sagi Grimberg <sagig@mellanox.com>
Date:   Mon May 19 17:44:23 2014 +0300

    Target/iser: Fix hangs in connection teardown
    
    commit 9d49f5e284e700576f3b65f1e28dea8539da6661 upstream.
    
    In ungraceful teardowns isert close flows seem racy such that
    isert_wait_conn hangs as RDMA_CM_EVENT_DISCONNECTED never
    gets invoked (no one called rdma_disconnect).
    
    Both graceful and ungraceful teardowns will have rx flush errors
    (isert posts a batch once connection is established). Once all
    flush errors are consumed we invoke isert_wait_conn and it will
    be responsible for calling rdma_disconnect. This way it can be
    sure that rdma_disconnect was called and it won't wait forever.
    
    This patch also removes the logout_posted indicator. either the
    logout completion was consumed and no problem decrementing the
    post_send_buf_count, or it was consumed as a flush error. no point
    of keeping it for isert_wait_conn as there is no danger that
    isert_conn will be accidentally removed while it is running.
    
    (Drop unnecessary sleep_on_conn_wait_comp check in
     isert_cq_rx_comp_err - nab)
    
    Signed-off-by: Sagi Grimberg <sagig@mellanox.com>
    Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3e41b2b57122819ee833ae377ff125dd13d973a2
Author: Sagi Grimberg <sagig@mellanox.com>
Date:   Mon May 19 17:44:22 2014 +0300

    Target/iser: Bail from accept_np if np_thread is trying to close
    
    commit e346ab343f4f58c12a96725c7b13df9cc2ad56f6 upstream.
    
    In case np_thread state is in RESET/SHUTDOWN/EXIT states,
    no point for isert to stall there as we may get a hang in
    case no one will wake it up later.
    
    Signed-off-by: Sagi Grimberg <sagig@mellanox.com>
    Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 951bc3714aa86d08878bd5f71b1e124d87a80c5b
Author: Jukka Taimisto <jtt@codenomicon.com>
Date:   Thu May 22 10:02:39 2014 +0000

    Bluetooth: Fix L2CAP deadlock
    
    commit 8a96f3cd22878fc0bb564a8478a6e17c0b8dca73 upstream.
    
    -[0x01 Introduction
    
    We have found a programming error causing a deadlock in Bluetooth subsystem
    of Linux kernel. The problem is caused by missing release_sock() call when
    L2CAP connection creation fails due full accept queue.
    
    The issue can be reproduced with 3.15-rc5 kernel and is also present in
    earlier kernels.
    
    -[0x02 Details
    
    The problem occurs when multiple L2CAP connections are created to a PSM which
    contains listening socket (like SDP) and left pending, for example,
    configuration (the underlying ACL link is not disconnected between
    connections).
    
    When L2CAP connection request is received and listening socket is found the
    l2cap_sock_new_connection_cb() function (net/bluetooth/l2cap_sock.c) is called.
    This function locks the 'parent' socket and then checks if the accept queue
    is full.
    
    1178         lock_sock(parent);
    1179
    1180         /* Check for backlog size */
    1181         if (sk_acceptq_is_full(parent)) {
    1182                 BT_DBG("backlog full %d", parent->sk_ack_backlog);
    1183                 return NULL;
    1184         }
    
    If case the accept queue is full NULL is returned, but the 'parent' socket
    is not released. Thus when next L2CAP connection request is received the code
    blocks on lock_sock() since the parent is still locked.
    
    Also note that for connections already established and waiting for
    configuration to complete a timeout will occur and l2cap_chan_timeout()
    (net/bluetooth/l2cap_core.c) will be called. All threads calling this
    function will also be blocked waiting for the channel mutex since the thread
    which is waiting on lock_sock() alread holds the channel mutex.
    
    We were able to reproduce this by sending continuously L2CAP connection
    request followed by disconnection request containing invalid CID. This left
    the created connections pending configuration.
    
    After the deadlock occurs it is impossible to kill bluetoothd, btmon will not
    get any more data etc. requiring reboot to recover.
    
    -[0x03 Fix
    
    Releasing the 'parent' socket when l2cap_sock_new_connection_cb() returns NULL
    seems to fix the issue.
    
    Signed-off-by: Jukka Taimisto <jtt@codenomicon.com>
    Reported-by: Tommi Mäkilä <tmakila@codenomicon.com>
    Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ab4910d04cdcce17e4d9af172ba80b2b05a0cdc2
Author: Jukka Rissanen <jukka.rissanen@linux.intel.com>
Date:   Tue May 27 11:33:22 2014 +0300

    Bluetooth: 6LoWPAN: Fix MAC address universal/local bit handling
    
    commit 62bbd5b35994eaf30519f126765d7f6af9cd3526 upstream.
    
    The universal/local bit handling was incorrectly done in the code.
    
    So when setting EUI address from BD address we do this:
    - If BD address type is PUBLIC, then we clear the universal bit
      in EUI address. If the address type is RANDOM, then the universal
      bit is set (BT 6lowpan draft chapter 3.2.2)
    - After this we invert the universal/local bit according to RFC 2464
    
    When figuring out BD address we do the reverse:
    - Take EUI address from stateless IPv6 address, invert the
      universal/local bit according to RFC 2464
    - If universal bit is 1 in this modified EUI address, then address
      type is set to RANDOM, otherwise it is PUBLIC
    
    Note that 6lowpan_iphc.[ch] does the final toggling of U/L bit
    before sending or receiving the network packet.
    
    Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 79319c68a2b76ebe34fc69dd52c67d47c06b9413
Author: Felipe Balbi <balbi@ti.com>
Date:   Wed Apr 23 09:58:26 2014 -0500

    bluetooth: hci_ldisc: fix deadlock condition
    
    commit da64c27d3c93ee9f89956b9de86c4127eb244494 upstream.
    
    LDISCs shouldn't call tty->ops->write() from within
    ->write_wakeup().
    
    ->write_wakeup() is called with port lock taken and
    IRQs disabled, tty->ops->write() will try to acquire
    the same port lock and we will deadlock.
    
    Acked-by: Marcel Holtmann <marcel@holtmann.org>
    Reviewed-by: Peter Hurley <peter@hurleysoftware.com>
    Reported-by: Huang Shijie <b32955@freescale.com>
    Signed-off-by: Felipe Balbi <balbi@ti.com>
    Tested-by: Andreas Bießmann <andreas@biessmann.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 703d671298a54a293776aa88474b601fc480292a
Author: Chander Kashyap <chander.kashyap@linaro.org>
Date:   Fri May 16 16:21:17 2014 +0530

    PM / OPP: fix incorrect OPP count handling in of_init_opp_table
    
    commit 086abb58590a4df73e8a6ed71fd418826937cd46 upstream.
    
    In of_init_opp_table function, if a failure to add an OPP is
    detected, the count of OPPs, yet to be added is not updated.
    Fix this by decrementing this count on failure as well.
    
    Signed-off-by: Chander Kashyap <k.chander@samsung.com>
    Signed-off-by: Inderpal Singh <inderpal.s@samsung.com>
    Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
    Acked-by: Nishanth Menon <nm@ti.com>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d4a06c59dfeb4012c13a113a450de5cc07dbad36
Author: Jianguo Wu <wujianguo@huawei.com>
Date:   Thu Apr 24 03:45:56 2014 +0100

    ARM: 8037/1: mm: support big-endian page tables
    
    commit 86f40622af7329375e38f282f6c0aab95f3e5f72 upstream.
    
    When enable LPAE and big-endian in a hisilicon board, while specify
    mem=384M mem=512M@7680M, will get bad page state:
    
    Freeing unused kernel memory: 180K (c0466000 - c0493000)
    BUG: Bad page state in process init  pfn:fa442
    page:c7749840 count:0 mapcount:-1 mapping:  (null) index:0x0
    page flags: 0x40000400(reserved)
    Modules linked in:
    CPU: 0 PID: 1 Comm: init Not tainted 3.10.27+ #66
    [<c000f5f0>] (unwind_backtrace+0x0/0x11c) from [<c000cbc4>] (show_stack+0x10/0x14)
    [<c000cbc4>] (show_stack+0x10/0x14) from [<c009e448>] (bad_page+0xd4/0x104)
    [<c009e448>] (bad_page+0xd4/0x104) from [<c009e520>] (free_pages_prepare+0xa8/0x14c)
    [<c009e520>] (free_pages_prepare+0xa8/0x14c) from [<c009f8ec>] (free_hot_cold_page+0x18/0xf0)
    [<c009f8ec>] (free_hot_cold_page+0x18/0xf0) from [<c00b5444>] (handle_pte_fault+0xcf4/0xdc8)
    [<c00b5444>] (handle_pte_fault+0xcf4/0xdc8) from [<c00b6458>] (handle_mm_fault+0xf4/0x120)
    [<c00b6458>] (handle_mm_fault+0xf4/0x120) from [<c0013754>] (do_page_fault+0xfc/0x354)
    [<c0013754>] (do_page_fault+0xfc/0x354) from [<c0008400>] (do_DataAbort+0x2c/0x90)
    [<c0008400>] (do_DataAbort+0x2c/0x90) from [<c0008fb4>] (__dabt_usr+0x34/0x40)
    
    The bad pfn:fa442 is not system memory(mem=384M mem=512M@7680M), after debugging,
    I find in page fault handler, will get wrong pfn from pte just after set pte,
    as follow:
    do_anonymous_page()
    {
    	...
    	set_pte_at(mm, address, page_table, entry);
    
    	//debug code
    	pfn = pte_pfn(entry);
    	pr_info("pfn:0x%lx, pte:0x%llxn", pfn, pte_val(entry));
    
    	//read out the pte just set
    	new_pte = pte_offset_map(pmd, address);
    	new_pfn = pte_pfn(*new_pte);
    	pr_info("new pfn:0x%lx, new pte:0x%llxn", pfn, pte_val(entry));
    	...
    }
    
    pfn:   0x1fa4f5,     pte:0xc00001fa4f575f
    new_pfn:0xfa4f5, new_pte:0xc00000fa4f5f5f	//new pfn/pte is wrong.
    
    The bug is happened in cpu_v7_set_pte_ext(ptep, pte):
    An LPAE PTE is a 64bit quantity, passed to cpu_v7_set_pte_ext in the r2 and r3 registers.
    On an LE kernel, r2 contains the LSB of the PTE, and r3 the MSB.
    On a BE kernel, the assignment is reversed.
    
    Unfortunately, the current code always assumes the LE case,
    leading to corruption of the PTE when clearing/setting bits.
    
    This patch fixes this issue much like it has been done already in the
    cpu_v7_switch_mm case.
    
    Signed-off-by: Jianguo Wu <wujianguo@huawei.com>
    Acked-by: Marc Zyngier <marc.zyngier@arm.com>
    Acked-by: Will Deacon <will.deacon@arm.com>
    Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1f90722f9f6329710ecaa52d96adeba7c01b2808
Author: Russell King <rmk+kernel@arm.linux.org.uk>
Date:   Sat May 3 11:03:28 2014 +0100

    ARM: stacktrace: avoid listing stacktrace functions in stacktrace
    
    commit 3683f44c42e991d313dc301504ee0fca1aeb8580 upstream.
    
    While debugging the FEC ethernet driver using stacktrace, it was noticed
    that the stacktraces always begin as follows:
    
     [<c00117b4>] save_stack_trace_tsk+0x0/0x98
     [<c0011870>] save_stack_trace+0x24/0x28
     ...
    
    This is because the stack trace code includes the stack frames for itself.
    This is incorrect behaviour, and also leads to "skip" doing the wrong
    thing (which is the number of stack frames to avoid recording.)
    
    Perversely, it does the right thing when passed a non-current thread.  Fix
    this by ensuring that we have a known constant number of frames above the
    main stack trace function, and always skip these.
    
    Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8fad854f23f319248d7533cb92896a3527c99719
Author: Hans Verkuil <hans.verkuil@cisco.com>
Date:   Thu Apr 17 07:24:31 2014 -0300

    media: saa7134: fix regression with tvtime
    
    commit 17e7f1b515803e1a79b246688aacbddd2e34165d upstream.
    
    This solves this bug:
    
    https://bugzilla.kernel.org/show_bug.cgi?id=73361
    
    The problem is that when you quit tvtime it calls STREAMOFF, but then it queues a
    bunch of buffers for no good reason before closing the file descriptor.
    
    In the past closing the fd would free the vb queue since that was part of the file
    handle struct. Since that was moved to the global struct that no longer happened.
    
    This wouldn't be a problem, but the extra QBUF calls that tvtime does meant that
    the buffer list in videobuf (q->stream) contained buffers, so REQBUFS would fail
    with -EBUSY.
    
    The solution is to init the list head explicitly when releasing the file
    descriptor and to not free the video resource when calling streamoff.
    
    The real fix will hopefully go into kernel 3.16 when the vb2 conversion is
    merged. Basically the saa7134 driver with the old videobuf is so full of holes it
    ain't funny anymore, so consider this a band-aid for kernels 3.14 and 15.
    
    Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
    Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6623dc0fb3e7587c9f48bdebd3e98877d69ff299
Author: Pali Rohár <pali.rohar@gmail.com>
Date:   Tue Apr 22 12:02:39 2014 -0300

    media: radio-bcm2048: fix wrong overflow check
    
    commit 5d60122b7e30f275593df93b39a76d3c2663cfc2 upstream.
    
    This patch fixes an off by one check in bcm2048_set_region().
    
    Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Pali Rohár <pali.rohar@gmail.com>
    Signed-off-by: Pavel Machek <pavel@ucw.cz>
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
    Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 66065ef0ff9ac1bde89a13346426b6c506abca59
Author: Olivier Langlois <olivier@trillion01.com>
Date:   Fri Mar 28 02:42:38 2014 -0300

    media: uvcvideo: Fix clock param realtime setting
    
    commit 3b35fc81e7ec552147a4fd843d0da0bbbe4ef253 upstream.
    
    timestamps in v4l2 buffers returned to userspace are updated in
    uvc_video_clock_update() which uses timestamps fetched from
    uvc_video_clock_decode() by calling unconditionally ktime_get_ts().
    
    Hence setting the module clock param to realtime has no effect before
    this patch.
    
    This has been tested with ffmpeg:
    
    ffmpeg -y -f v4l2 -input_format yuyv422 -video_size 640x480 -framerate 30 -i /dev/video0 \
     -f alsa -acodec pcm_s16le -ar 16000 -ac 1 -i default \
     -c:v libx264 -preset ultrafast \
     -c:a libfdk_aac \
     out.mkv
    
    and inspecting the v4l2 input starting timestamp.
    
    Signed-off-by: Olivier Langlois <olivier@trillion01.com>
    Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
    Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 01b8eab1cc72c9339974fcee698515042d05f9b3
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Wed Jun 11 18:44:04 2014 +0000

    rtmutex: Plug slow unlock race
    
    commit 27e35715df54cbc4f2d044f681802ae30479e7fb upstream.
    
    When the rtmutex fast path is enabled the slow unlock function can
    create the following situation:
    
    spin_lock(foo->m->wait_lock);
    foo->m->owner = NULL;
    	    			rt_mutex_lock(foo->m); <-- fast path
    				free = atomic_dec_and_test(foo->refcnt);
    				rt_mutex_unlock(foo->m); <-- fast path
    				if (free)
    				   kfree(foo);
    
    spin_unlock(foo->m->wait_lock); <--- Use after free.
    
    Plug the race by changing the slow unlock to the following scheme:
    
         while (!rt_mutex_has_waiters(m)) {
         	    /* Clear the waiters bit in m->owner */
    	    clear_rt_mutex_waiters(m);
          	    owner = rt_mutex_owner(m);
          	    spin_unlock(m->wait_lock);
          	    if (cmpxchg(m->owner, owner, 0) == owner)
          	       return;
          	    spin_lock(m->wait_lock);
         }
    
    So in case of a new waiter incoming while the owner tries the slow
    path unlock we have two situations:
    
     unlock(wait_lock);
    					lock(wait_lock);
     cmpxchg(p, owner, 0) == owner
     	    	   			mark_rt_mutex_waiters(lock);
    	 				acquire(lock);
    
    Or:
    
     unlock(wait_lock);
    					lock(wait_lock);
    	 				mark_rt_mutex_waiters(lock);
     cmpxchg(p, owner, 0) != owner
    					enqueue_waiter();
    					unlock(wait_lock);
     lock(wait_lock);
     wakeup_next waiter();
     unlock(wait_lock);
    					lock(wait_lock);
    					acquire(lock);
    
    If the fast path is disabled, then the simple
    
       m->owner = NULL;
       unlock(m->wait_lock);
    
    is sufficient as all access to m->owner is serialized via
    m->wait_lock;
    
    Also document and clarify the wakeup_next_waiter function as suggested
    by Oleg Nesterov.
    
    Reported-by: Steven Rostedt <rostedt@goodmis.org>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Reviewed-by: Steven Rostedt <rostedt@goodmis.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Link: http://lkml.kernel.org/r/20140611183852.937945560@linutronix.de
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fb52f40e085ef4074f1335672cd62c1f832af13b
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Thu Jun 5 12:34:23 2014 +0200

    rtmutex: Handle deadlock detection smarter
    
    commit 3d5c9340d1949733eb37616abd15db36aef9a57c upstream.
    
    Even in the case when deadlock detection is not requested by the
    caller, we can detect deadlocks. Right now the code stops the lock
    chain walk and keeps the waiter enqueued, even on itself. Silly not to
    yell when such a scenario is detected and to keep the waiter enqueued.
    
    Return -EDEADLK unconditionally and handle it at the call sites.
    
    The futex calls return -EDEADLK. The non futex ones dequeue the
    waiter, throw a warning and put the task into a schedule loop.
    
    Tagged for stable as it makes the code more robust.
    
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: Steven Rostedt <rostedt@goodmis.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Brad Mouring <bmouring@ni.com>
    Link: http://lkml.kernel.org/r/20140605152801.836501969@linutronix.de
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2fff347cce2d1538556ab3127f7224f6b522575e
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Thu Jun 5 11:16:12 2014 +0200

    rtmutex: Detect changes in the pi lock chain
    
    commit 82084984383babe728e6e3c9a8e5c46278091315 upstream.
    
    When we walk the lock chain, we drop all locks after each step. So the
    lock chain can change under us before we reacquire the locks. That's
    harmless in principle as we just follow the wrong lock path. But it
    can lead to a false positive in the dead lock detection logic:
    
    T0 holds L0
    T0 blocks on L1 held by T1
    T1 blocks on L2 held by T2
    T2 blocks on L3 held by T3
    T4 blocks on L4 held by T4
    
    Now we walk the chain
    
    lock T1 -> lock L2 -> adjust L2 -> unlock T1 ->
         lock T2 ->  adjust T2 ->  drop locks
    
    T2 times out and blocks on L0
    
    Now we continue:
    
    lock T2 -> lock L0 -> deadlock detected, but it's not a deadlock at all.
    
    Brad tried to work around that in the deadlock detection logic itself,
    but the more I looked at it the less I liked it, because it's crystal
    ball magic after the fact.
    
    We actually can detect a chain change very simple:
    
    lock T1 -> lock L2 -> adjust L2 -> unlock T1 -> lock T2 -> adjust T2 ->
    
         next_lock = T2->pi_blocked_on->lock;
    
    drop locks
    
    T2 times out and blocks on L0
    
    Now we continue:
    
    lock T2 ->
    
         if (next_lock != T2->pi_blocked_on->lock)
         	   return;
    
    So if we detect that T2 is now blocked on a different lock we stop the
    chain walk. That's also correct in the following scenario:
    
    lock T1 -> lock L2 -> adjust L2 -> unlock T1 -> lock T2 -> adjust T2 ->
    
         next_lock = T2->pi_blocked_on->lock;
    
    drop locks
    
    T3 times out and drops L3
    T2 acquires L3 and blocks on L4 now
    
    Now we continue:
    
    lock T2 ->
    
         if (next_lock != T2->pi_blocked_on->lock)
         	   return;
    
    We don't have to follow up the chain at that point, because T2
    propagated our priority up to T4 already.
    
    [ Folded a cleanup patch from peterz ]
    
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Reported-by: Brad Mouring <bmouring@ni.com>
    Cc: Steven Rostedt <rostedt@goodmis.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Link: http://lkml.kernel.org/r/20140605152801.930031935@linutronix.de
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3dd4627f51cd62ccb8bcfcdd069b041a102711e7
Author: Lv Zheng <lv.zheng@intel.com>
Date:   Mon May 12 15:50:16 2014 +0800

    ACPI: Fix conflict between customized DSDT and DSDT local copy
    
    commit 73577d1df8e1f31f6b1a5eebcdbc334eb0330e47 upstream.
    
    This patch fixes the following issue:
    If DSDT is customized, no local DSDT copy is needed.
    
    References: https://bugzilla.kernel.org/show_bug.cgi?id=69711
    Signed-off-by: Enrico Etxe Arte <goitizena.generoa@gmail.com>
    Signed-off-by: Lv Zheng <lv.zheng@intel.com>
    [rjw: Subject]
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f445789dcf3896215254dec320ac91cd69f7b61f
Author: David Binderman <dcb314@hotmail.com>
Date:   Fri Apr 4 12:36:55 2014 +0800

    ACPICA: utstring: Check array index bound before use.
    
    commit 5d42b0fa25df7ef2f575107597c1aaebe2407d10 upstream.
    
    ACPICA BZ 1077. David Binderman.
    
    References: https://bugs.acpica.org/show_bug.cgi?id=1077
    Signed-off-by: David Binderman <dcb314@hotmail.com>
    Signed-off-by: Bob Moore <robert.moore@intel.com>
    Signed-off-by: Lv Zheng <lv.zheng@intel.com>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2c9b8a2ba1b6ccc9ef52b79e0312bae276b3c705
Author: Bjørn Mork <bjorn@mork.no>
Date:   Thu May 22 12:47:47 2014 +0200

    ACPI: add dynamic_debug support
    
    commit 45fef5b88d1f2f47ecdefae6354372d440ca5c84 upstream.
    
    Commit 1a699476e258 ("ACPI / hotplug / PCI: Hotplug notifications
    from acpi_bus_notify()") added debug messages for a few common
    events. These debug messages are unconditionally enabled if
    CONFIG_DYNAMIC_DEBUG is defined, contrary to the documented
    meaning, making the ACPI system spew lots of unwanted noise on
    any kernel with dynamic debugging.
    
    The bug was introduced by commit fbfddae69657 ("ACPI: Add
    acpi_handle_<level>() interfaces"), which added the
    CONFIG_DYNAMIC_DEBUG dependency without respecting its meaning.
    
    Fix by adding real support for dynamic_debug.
    
    Fixes: fbfddae69657 ("ACPI: Add acpi_handle_<level>() interfaces")
    Signed-off-by: Bjørn Mork <bjorn@mork.no>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1bae99bdf42d4587b5cbe2ec255975abb83f882c
Author: Ezequiel Garcia <ezequiel.garcia@free-electrons.com>
Date:   Thu Apr 17 09:28:20 2014 -0300

    media: stk1160: Avoid stack-allocated buffer for control URBs
    
    commit 85ac1a1772bb41da895bad83a81f6a62c8f293f6 upstream.
    
    Currently stk1160_read_reg() uses a stack-allocated char to get the
    read control value. This is wrong because usb_control_msg() requires
    a kmalloc-ed buffer.
    
    This commit fixes such issue by kmalloc'ating a 1-byte buffer to receive
    the read value.
    
    While here, let's remove the urb_buf array which was meant for a similar
    purpose, but never really used.
    
    Cc: Alan Stern <stern@rowland.harvard.edu>
    Reported-by: Sander Eikelenboom <linux@eikelenboom.it>
    Signed-off-by: Ezequiel Garcia <ezequiel.garcia@free-electrons.com>
    Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
    Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit edf9ebfc0e9cb7058d97cffadee22f5aa94cc19e
Author: Takashi Iwai <tiwai@suse.de>
Date:   Mon May 5 11:20:05 2014 -0300

    media: ivtv: Fix Oops when no firmware is loaded
    
    commit deb29e90221a6d4417aa67be971613c353180331 upstream.
    
    When ivtv PCM device is accessed at the state where no firmware is
    loaded, it oopses like:
    
      BUG: unable to handle kernel NULL pointer dereference at 0000000000000050
      IP: [<ffffffffa049a881>] try_mailbox.isra.0+0x11/0x50 [ivtv]
      Call Trace:
        [<ffffffffa049aa20>] ivtv_api_call+0x160/0x6b0 [ivtv]
        [<ffffffffa049af86>] ivtv_api+0x16/0x40 [ivtv]
        [<ffffffffa049b10c>] ivtv_vapi+0xac/0xc0 [ivtv]
        [<ffffffffa049d40d>] ivtv_start_v4l2_encode_stream+0x19d/0x630 [ivtv]
        [<ffffffffa0530653>] snd_ivtv_pcm_capture_open+0x173/0x1c0 [ivtv_alsa]
        [<ffffffffa04526f1>] snd_pcm_open_substream+0x51/0x100 [snd_pcm]
        [<ffffffffa0452853>] snd_pcm_open+0xb3/0x260 [snd_pcm]
        [<ffffffffa0452a37>] snd_pcm_capture_open+0x37/0x50 [snd_pcm]
        [<ffffffffa033f557>] snd_open+0xa7/0x1e0 [snd]
        [<ffffffff8118a628>] chrdev_open+0x88/0x1d0
        [<ffffffff811840be>] do_dentry_open+0x1de/0x270
        [<ffffffff81193a73>] do_last+0x1c3/0xec0
        [<ffffffff81194826>] path_openat+0xb6/0x670
        [<ffffffff81195b65>] do_filp_open+0x35/0x80
        [<ffffffff81185449>] do_sys_open+0x129/0x210
        [<ffffffff815b782d>] system_call_fastpath+0x1a/0x1f
    
    This patch adds the check of firmware at PCM open callback like other
    open callbacks of this driver.
    
    Bugzilla: https://apibugzilla.novell.com/show_bug.cgi?id=875440
    
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
    Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f95809545bc634388a3e82c2a9088fe931feccf4
Author: Johan Hovold <jhovold@gmail.com>
Date:   Mon May 26 19:23:33 2014 +0200

    USB: serial: fix potential runtime pm imbalance at device remove
    
    commit c14829fad88dbeda57253590695b85ba51270621 upstream.
    
    Only call usb_autopm_put_interface() if the corresponding
    usb_autopm_get_interface() was successful.
    
    This prevents a potential runtime PM counter imbalance should
    usb_autopm_get_interface() fail. Note that the USB PM usage counter is
    reset when the interface is unbound, but that the runtime PM counter may
    be left unbalanced.
    
    Also add comment on why we don't need to worry about racing
    resume/suspend on autopm_get failures.
    
    Fixes: d5fd650cfc7f ("usb: serial: prevent suspend/resume from racing
    against probe/remove")
    
    Signed-off-by: Johan Hovold <jhovold@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b9b8bcc97d19a3175e715474c770b3521764c6c9
Author: Aleksander Morgado <aleksander@aleksander.es>
Date:   Thu May 29 13:33:27 2014 +0200

    usb: qcserial: add additional Sierra Wireless QMI devices
    
    commit 0ce5fb58564fd85aa8fd2d24209900e2e845317b upstream.
    
    A set of new VID/PIDs retrieved from the out-of-tree GobiNet/GobiSerial
    Sierra Wireless drivers.
    
    Signed-off-by: Aleksander Morgado <aleksander@aleksander.es>
    Link: http://marc.info/?l=linux-usb&m=140136310027293&w=2
    Cc: <stable@vger.kernel.org>	# backport in link above
    Signed-off-by: Johan Hovold <jhovold@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit dcc3c3c8c7fe242c7366960d7471eb33afc8afb7
Author: Aleksander Morgado <aleksander@aleksander.es>
Date:   Wed May 28 21:13:51 2014 +0200

    usb: qcserial: add Netgear AirCard 341U
    
    commit ff1fcd50bc2459744e6f948310bc18eb7d6e8c72 upstream.
    
    Signed-off-by: Aleksander Morgado <aleksander@aleksander.es>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e7a35d5201fae8a4ffcadfd2514d3f0982a7d60f
Author: Johan Hovold <jhovold@gmail.com>
Date:   Mon May 26 19:22:54 2014 +0200

    USB: sierra: fix remote wakeup
    
    commit 80cc0fcbdaeaf10d04ba27779a2d7ceb73d2717a upstream.
    
    Make sure that needs_remote_wake up is always set when there are open
    ports.
    
    Currently close() would unconditionally set needs_remote_wakeup to 0
    even though there might still be open ports. This could lead to blocked
    input and possibly dropped data on devices that do not support remote
    wakeup (and which must therefore not be runtime suspended while open).
    
    Add an open_ports counter (protected by the susp_lock) and only clear
    needs_remote_wakeup when the last port is closed.
    
    Fixes: e6929a9020ac ("USB: support for autosuspend in sierra while
    online")
    
    Signed-off-by: Johan Hovold <jhovold@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0d014638d7ce7862b68fe890e09716dfbc7e1979
Author: Johan Hovold <jhovold@gmail.com>
Date:   Mon May 26 19:22:53 2014 +0200

    USB: sierra: fix urb and memory leak on disconnect
    
    commit 014333f77c0b71123d6ef7d31a9724e0699c9548 upstream.
    
    The delayed-write queue was never emptied on disconnect, something which
    would lead to leaked urbs and transfer buffers if the device is
    disconnected before being runtime resumed due to a write.
    
    Fixes: e6929a9020ac ("USB: support for autosuspend in sierra while
    online")
    
    Signed-off-by: Johan Hovold <jhovold@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit df0f29712e67be45d6d988d18ce1404d3facea1f
Author: Johan Hovold <jhovold@gmail.com>
Date:   Mon May 26 19:22:52 2014 +0200

    USB: sierra: fix urb and memory leak in resume error path
    
    commit 7fdd26a01eb7b6cb6855ff8f69ef4a720720dfcb upstream.
    
    Neither the transfer buffer or the urb itself were released in the
    resume error path for delayed writes. Also on errors, the remainder of
    the queue was not even processed, which leads to further urb and buffer
    leaks.
    
    The same error path also failed to balance the outstanding-urb counter,
    something which results in degraded throughput or completely blocked
    writes.
    
    Fix this by releasing urb and buffer and balancing counters on errors,
    and by always processing the whole queue even when submission of one urb
    fails.
    
    Fixes: e6929a9020ac ("USB: support for autosuspend in sierra while
    online")
    
    Signed-off-by: Johan Hovold <jhovold@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 10e639f76a79236801e37b62ec65684c7f69d053
Author: Johan Hovold <jhovold@gmail.com>
Date:   Mon May 26 19:22:51 2014 +0200

    USB: sierra: fix use after free at suspend/resume
    
    commit 8452727de70f6ad850cd6d0aaa18b5d9050aa63b upstream.
    
    Fix use after free or NULL-pointer dereference during suspend and
    resume.
    
    The port data may never have been allocated (port probe failed)
    or may already have been released by port_remove (e.g. driver is
    unloaded) when suspend and resume are called.
    
    Fixes: e6929a9020ac ("USB: support for autosuspend in sierra while
    online")
    
    Signed-off-by: Johan Hovold <jhovold@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 37e792dfe6ed8c002874bdd470a325dd55f12d6b
Author: Johan Hovold <jhovold@gmail.com>
Date:   Mon May 26 19:22:50 2014 +0200

    USB: sierra: fix AA deadlock in open error path
    
    commit 353fe198602e8b4d1c7bdcceb8e60955087201b1 upstream.
    
    Fix AA deadlock in open error path that would call close() and try to
    grab the already held disc_mutex.
    
    Fixes: b9a44bc19f48 ("sierra: driver urb handling improvements")
    
    Signed-off-by: Johan Hovold <jhovold@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 04d561b78d0ef52d8035778290e767a686dd8888
Author: Johan Hovold <jhovold@gmail.com>
Date:   Mon May 26 19:23:18 2014 +0200

    USB: usb_wwan: fix potential blocked I/O after resume
    
    commit fb7ad4f93d9f0f7d49beda32f5e7becb94b29a4d upstream.
    
    Keep trying to submit urbs rather than bail out on first read-urb
    submission error, which would also prevent I/O for any further ports
    from being resumed.
    
    Instead keep an error count, for all types of failed submissions, and
    let USB core know that something went wrong.
    
    Also make sure to always clear the suspended flag. Currently a failed
    read-urb submission would prevent cached writes as well as any
    subsequent writes from being submitted until next suspend-resume cycle,
    something which may not even necessarily happen.
    
    Note that USB core currently only logs an error if an interface resume
    failed.
    
    Fixes: 383cedc3bb43 ("USB: serial: full autosuspend support for the
    option driver")
    
    Signed-off-by: Johan Hovold <jhovold@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit dd38b5062df92e69afa4437d952c7194c6bfd6f5
Author: Johan Hovold <jhovold@gmail.com>
Date:   Mon May 26 19:23:17 2014 +0200

    USB: usb_wwan: fix potential NULL-deref at resume
    
    commit 9096f1fbba916c2e052651e9de82fcfb98d4bea7 upstream.
    
    The interrupt urb was submitted unconditionally at resume, something
    which could lead to a NULL-pointer dereference in the urb completion
    handler as resume may be called after the port and port data is gone.
    
    Fix this by making sure the interrupt urb is only submitted and active
    when the port is open.
    
    Fixes: 383cedc3bb43 ("USB: serial: full autosuspend support for the
    option driver")
    
    Signed-off-by: Johan Hovold <jhovold@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 582e7e5f9cc0d35e56bfb5e79f242d9e5dd317ba
Author: Johan Hovold <jhovold@gmail.com>
Date:   Mon May 26 19:23:16 2014 +0200

    USB: usb_wwan: fix urb leak at shutdown
    
    commit 79eed03e77d481b55d85d1cfe5a1636a0d3897fd upstream.
    
    The delayed-write queue was never emptied at shutdown (close), something
    which could lead to leaked urbs if the port is closed before being
    runtime resumed due to a write.
    
    When this happens the output buffer would not drain on close
    (closing_wait timeout), and after consecutive opens, writes could be
    corrupted with previously buffered data, transfered with reduced
    throughput or completely blocked.
    
    Note that unbusy_queued_urb() was simply moved out of CONFIG_PM.
    
    Fixes: 383cedc3bb43 ("USB: serial: full autosuspend support for the
    option driver")
    
    Signed-off-by: Johan Hovold <jhovold@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5a77e53bb1cb996391ab1feb898b6ffb0657f96f
Author: Johan Hovold <jhovold@gmail.com>
Date:   Mon May 26 19:23:15 2014 +0200

    USB: usb_wwan: fix write and suspend race
    
    commit 170fad9e22df0063eba0701adb966786d7a4ec5a upstream.
    
    Fix race between write() and suspend() which could lead to writes being
    dropped (or I/O while suspended) if the device is runtime suspended
    while a write request is being processed.
    
    Specifically, suspend() releases the susp_lock after determining the
    device is idle but before setting the suspended flag, thus leaving a
    window where a concurrent write() can submit an urb.
    
    Fixes: 383cedc3bb43 ("USB: serial: full autosuspend support for the
    option driver")
    
    Signed-off-by: Johan Hovold <jhovold@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2f59a10cb390aaa74dda48ca73214d8ce52d3c2b
Author: xiao jin <jin.xiao@intel.com>
Date:   Mon May 26 19:23:14 2014 +0200

    USB: usb_wwan: fix race between write and resume
    
    commit d9e93c08d8d985e5ef89436ebc9f4aad7e31559f upstream.
    
    We find a race between write and resume. usb_wwan_resume run play_delayed()
    and spin_unlock, but intfdata->suspended still is not set to zero.
    At this time usb_wwan_write is called and anchor the urb to delay
    list. Then resume keep running but the delayed urb have no chance
    to be commit until next resume. If the time of next resume is far
    away, tty will be blocked in tty_wait_until_sent during time. The
    race also can lead to writes being reordered.
    
    This patch put play_Delayed and intfdata->suspended together in the
    spinlock, it's to avoid the write race during resume.
    
    Fixes: 383cedc3bb43 ("USB: serial: full autosuspend support for the
    option driver")
    
    Signed-off-by: xiao jin <jin.xiao@intel.com>
    Signed-off-by: Zhang, Qi1 <qi1.zhang@intel.com>
    Reviewed-by: David Cohen <david.a.cohen@linux.intel.com>
    Signed-off-by: Johan Hovold <jhovold@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2bcee6d0ec6d18fff28b36d230d3ecff1778ecc2
Author: xiao jin <jin.xiao@intel.com>
Date:   Mon May 26 19:23:13 2014 +0200

    USB: usb_wwan: fix urb leak in write error path
    
    commit db0904737947d509844e171c9863ecc5b4534005 upstream.
    
    When enable usb serial for modem data, sometimes the tty is blocked
    in tty_wait_until_sent because portdata->out_busy always is set and
    have no chance to be cleared.
    
    We find a bug in write error path. usb_wwan_write set portdata->out_busy
    firstly, then try autopm async with error. No out urb submit and no
    usb_wwan_outdat_callback to this write, portdata->out_busy can't be
    cleared.
    
    This patch clear portdata->out_busy if usb_wwan_write try autopm async
    with error.
    
    Fixes: 383cedc3bb43 ("USB: serial: full autosuspend support for the
    option driver")
    
    Signed-off-by: xiao jin <jin.xiao@intel.com>
    Signed-off-by: Zhang, Qi1 <qi1.zhang@intel.com>
    Reviewed-by: David Cohen <david.a.cohen@linux.intel.com>
    Signed-off-by: Johan Hovold <jhovold@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4d7d9fb81084361ece363d6038bde2fdf9e9d510
Author: Mikulas Patocka <mpatocka@redhat.com>
Date:   Thu May 15 06:58:24 2014 -0400

    matroxfb: perform a dummy read of M_STATUS
    
    commit 972754cfaee94d6e25acf94a497bc0a864d91b7e upstream.
    
    I had occasional screen corruption with the matrox framebuffer driver and
    I found out that the reason for the corruption is that the hardware
    blitter accesses the videoram while it is being written to.
    
    The matrox driver has a macro WaitTillIdle() that should wait until the
    blitter is idle, but it sometimes doesn't work. I added a dummy read
    mga_inl(M_STATUS) to WaitTillIdle() to fix the problem. The dummy read
    will flush the write buffer in the PCI chipset, and the next read of
    M_STATUS will return the hardware status.
    
    Since applying this patch, I had no screen corruption at all.
    
    Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
    Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 04e0002916df7668303e9ec855709327352fc9a2
Author: Maurizio Lombardi <mlombard@redhat.com>
Date:   Tue May 27 12:48:56 2014 -0400

    ext4: fix wrong assert in ext4_mb_normalize_request()
    
    commit b5b60778558cafad17bbcbf63e0310bd3c68eb17 upstream.
    
    The variable "size" is expressed as number of blocks and not as
    number of clusters, this could trigger a kernel panic when using
    ext4 with the size of a cluster different from the size of a block.
    
    Signed-off-by: Maurizio Lombardi <mlombard@redhat.com>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 28f26f6de7c4a171ff82166a09c0dafb2f936b15
Author: Jan Kara <jack@suse.cz>
Date:   Tue May 27 12:48:55 2014 -0400

    ext4: fix zeroing of page during writeback
    
    commit eeece469dedadf3918bad50ad80f4616a0064e90 upstream.
    
    Tail of a page straddling inode size must be zeroed when being written
    out due to POSIX requirement that modifications of mmaped page beyond
    inode size must not be written to the file. ext4_bio_write_page() did
    this only for blocks fully beyond inode size but didn't properly zero
    blocks partially beyond inode size. Fix this.
    
    The problem has been uncovered by mmap_11-4 test in openposix test suite
    (part of LTP).
    
    Reported-by: Xiaoguang Wang <wangxg.fnst@cn.fujitsu.com>
    Fixes: 5a0dc7365c240
    Fixes: bd2d0210cf22f
    CC: stable@vger.kernel.org
    Signed-off-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit dc2acd78c1488bc228ee335dee311ec6caab26e8
Author: Namjae Jeon <namjae.jeon@samsung.com>
Date:   Mon May 12 08:12:25 2014 -0400

    ext4: fix data integrity sync in ordered mode
    
    commit 1c8349a17137b93f0a83f276c764a6df1b9a116e upstream.
    
    When we perform a data integrity sync we tag all the dirty pages with
    PAGECACHE_TAG_TOWRITE at start of ext4_da_writepages.  Later we check
    for this tag in write_cache_pages_da and creates a struct
    mpage_da_data containing contiguously indexed pages tagged with this
    tag and sync these pages with a call to mpage_da_map_and_submit.  This
    process is done in while loop until all the PAGECACHE_TAG_TOWRITE
    pages are synced. We also do journal start and stop in each iteration.
    journal_stop could initiate journal commit which would call
    ext4_writepage which in turn will call ext4_bio_write_page even for
    delayed OR unwritten buffers. When ext4_bio_write_page is called for
    such buffers, even though it does not sync them but it clears the
    PAGECACHE_TAG_TOWRITE of the corresponding page and hence these pages
    are also not synced by the currently running data integrity sync. We
    will end up with dirty pages although sync is completed.
    
    This could cause a potential data loss when the sync call is followed
    by a truncate_pagecache call, which is exactly the case in
    collapse_range.  (It will cause generic/127 failure in xfstests)
    
    To avoid this issue, we can use set_page_writeback_keepwrite instead of
    set_page_writeback, which doesn't clear TOWRITE tag.
    
    Signed-off-by: Namjae Jeon <namjae.jeon@samsung.com>
    Signed-off-by: Ashish Sangwan <a.sangwan@samsung.com>
    Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
    Reviewed-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit aa7de1cc6e21fcc2f72e752884214e1bb6479596
Author: Christian Borntraeger <borntraeger@de.ibm.com>
Date:   Mon May 26 21:55:08 2014 +0200

    s390/lowcore: reserve 96 bytes for IRB in lowcore
    
    commit 993072ee67aa179c48c85eb19869804e68887d86 upstream.
    
    The IRB might be 96 bytes if the extended-I/O-measurement facility is
    used. This feature is currently not used by Linux, but struct irb
    already has the emw defined. So let's make the irb in lowcore match the
    size of the internal data structure to be future proof.
    We also have to add a pad, to correctly align the paste.
    
    The bigger irb field also circumvents a bug in some QEMU versions that
    always write the emw field on test subchannel and therefore destroy the
    paste definitions of this CPU. Running under these QEMU version broke
    some timing functions in the VDSO and all users of these functions,
    e.g. some JREs.
    
    Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
    Cc: Sebastian Ott <sebott@linux.vnet.ibm.com>
    Cc: Cornelia Huck <cornelia.huck@de.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1187571b73e16f18fd04ccf2bcf307a04c725895
Author: Martin Schwidefsky <schwidefsky@de.ibm.com>
Date:   Tue May 20 17:21:35 2014 +0200

    s390/time: cast tv_nsec to u64 prior to shift in update_vsyscall
    
    commit b6f4296279ab3ada554d993d12844272fd86b36a upstream.
    
    Analog to git commit 28b92e09e25bdc0ae864b22eacf195a74f861389
    first cast tk->wall_to_monotonic.tv_nsec to u64 before doing
    the shift with tk->shift to avoid loosing relevant bits on a
    32-bit kernel.
    
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7c50a27b68f395fee0c45cb769b4c8546dcac7a4
Author: Lai Jiangshan <laijs@cn.fujitsu.com>
Date:   Fri Jun 6 14:37:10 2014 -0700

    idr: fix overflow bug during maximum ID calculation at maximum height
    
    commit 3afb69cb5572b3c8c898c00880803cf1a49852c4 upstream.
    
    idr_replace() open-codes the logic to calculate the maximum valid ID
    given the height of the idr tree; unfortunately, the open-coded logic
    doesn't account for the fact that the top layer may have unused slots
    and over-shifts the limit to zero when the tree is at its maximum
    height.
    
    The following test code shows it fails to replace the value for
    id=((1<<27)+42):
    
      static void test5(void)
      {
            int id;
            DEFINE_IDR(test_idr);
      #define TEST5_START ((1<<27)+42) /* use the highest layer */
    
            printk(KERN_INFO "Start test5\n");
            id = idr_alloc(&test_idr, (void *)1, TEST5_START, 0, GFP_KERNEL);
            BUG_ON(id != TEST5_START);
            TEST_BUG_ON(idr_replace(&test_idr, (void *)2, TEST5_START) != (void *)1);
            idr_destroy(&test_idr);
            printk(KERN_INFO "End of test5\n");
      }
    
    Fix the bug by using idr_max() which correctly takes into account the
    maximum allowed shift.
    
    sub_alloc() shares the same problem and may incorrectly fail with
    -EAGAIN; however, this bug doesn't affect correct operation because
    idr_get_empty_slot(), which already uses idr_max(), retries with the
    increased @id in such cases.
    
    [tj@kernel.org: Updated patch description.]
    Signed-off-by: Lai Jiangshan <laijs@cn.fujitsu.com>
    Acked-by: Tejun Heo <tj@kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ffd6802830d5909dee42c4d786e420288a43815d
Author: Victor Kamensky <victor.kamensky@linaro.org>
Date:   Tue Jun 3 19:21:30 2014 +0100

    arm64: ptrace: fix empty registers set in prstatus of aarch32 process core
    
    commit 2227901a0230d8fde81ba9c602d649839390f56b upstream.
    
    Currently core file of aarch32 process prstatus note has empty
    registers set. As result aarch32 core files create by V8 kernel are
    not very useful.
    
    It happens because compat_gpr_get and compat_gpr_set functions can
    copy registers values to/from either kbuf or ubuf. ELF core file
    collection function fill_thread_core_info calls compat_gpr_get
    with kbuf set and ubuf set to 0. But current compat_gpr_get and
    compat_gpr_set function handle copy to/from only ubuf case.
    
    Fix is to handle kbuf and ubuf as two separate cases in similar
    way as other functions like user_regset_copyout, user_regset_copyin do.
    
    Signed-off-by: Victor Kamensky <victor.kamensky@linaro.org>
    Acked-by: Will Deacon <will.deacon@arm.com>
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5a0713d8c4595bf562245c1137488de30cc4757b
Author: Will Deacon <will.deacon@arm.com>
Date:   Mon Jun 2 11:47:23 2014 +0100

    arm64: ptrace: change fs when passing kernel pointer to regset code
    
    commit c168870704bcde6bb63d05f7882b620dd3985a46 upstream.
    
    Our compat PTRACE_POKEUSR implementation simply passes the user data to
    regset_copy_from_user after some simple range checking. Unfortunately,
    the data in question has already been copied to the kernel stack by this
    point, so the subsequent access_ok check fails and the ptrace request
    returns -EFAULT. This causes problems tracing fork() with older versions
    of strace.
    
    This patch briefly changes the fs to KERNEL_DS, so that the access_ok
    check passes even with a kernel address.
    
    Signed-off-by: Will Deacon <will.deacon@arm.com>
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c7d489fa670f9d54dd05b46d81397ec6df208e60
Author: Matthew Dempsky <mdempsky@chromium.org>
Date:   Fri Jun 6 14:36:42 2014 -0700

    ptrace: fix fork event messages across pid namespaces
    
    commit 4e52365f279564cef0ddd41db5237f0471381093 upstream.
    
    When tracing a process in another pid namespace, it's important for fork
    event messages to contain the child's pid as seen from the tracer's pid
    namespace, not the parent's.  Otherwise, the tracer won't be able to
    correlate the fork event with later SIGTRAP signals it receives from the
    child.
    
    We still risk a race condition if a ptracer from a different pid
    namespace attaches after we compute the pid_t value.  However, sending a
    bogus fork event message in this unlikely scenario is still a vast
    improvement over the status quo where we always send bogus fork event
    messages to debuggers in a different pid namespace than the forking
    process.
    
    Signed-off-by: Matthew Dempsky <mdempsky@chromium.org>
    Acked-by: Oleg Nesterov <oleg@redhat.com>
    Cc: Kees Cook <keescook@chromium.org>
    Cc: Julien Tinnes <jln@chromium.org>
    Cc: Roland McGrath <mcgrathr@chromium.org>
    Cc: Jan Kratochvil <jan.kratochvil@redhat.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 191743258363fd3fc6ddc4109d29a00bada9497a
Author: Johannes Weiner <hannes@cmpxchg.org>
Date:   Fri Jun 6 14:35:35 2014 -0700

    mm: vmscan: clear kswapd's special reclaim powers before exiting
    
    commit 71abdc15adf8c702a1dd535f8e30df50758848d2 upstream.
    
    When kswapd exits, it can end up taking locks that were previously held
    by allocating tasks while they waited for reclaim.  Lockdep currently
    warns about this:
    
    On Wed, May 28, 2014 at 06:06:34PM +0800, Gu Zheng wrote:
    >  inconsistent {RECLAIM_FS-ON-W} -> {IN-RECLAIM_FS-R} usage.
    >  kswapd2/1151 [HC0[0]:SC0[0]:HE1:SE1] takes:
    >   (&sig->group_rwsem){+++++?}, at: exit_signals+0x24/0x130
    >  {RECLAIM_FS-ON-W} state was registered at:
    >     mark_held_locks+0xb9/0x140
    >     lockdep_trace_alloc+0x7a/0xe0
    >     kmem_cache_alloc_trace+0x37/0x240
    >     flex_array_alloc+0x99/0x1a0
    >     cgroup_attach_task+0x63/0x430
    >     attach_task_by_pid+0x210/0x280
    >     cgroup_procs_write+0x16/0x20
    >     cgroup_file_write+0x120/0x2c0
    >     vfs_write+0xc0/0x1f0
    >     SyS_write+0x4c/0xa0
    >     tracesys+0xdd/0xe2
    >  irq event stamp: 49
    >  hardirqs last  enabled at (49):  _raw_spin_unlock_irqrestore+0x36/0x70
    >  hardirqs last disabled at (48):  _raw_spin_lock_irqsave+0x2b/0xa0
    >  softirqs last  enabled at (0):  copy_process.part.24+0x627/0x15f0
    >  softirqs last disabled at (0):            (null)
    >
    >  other info that might help us debug this:
    >   Possible unsafe locking scenario:
    >
    >         CPU0
    >         ----
    >    lock(&sig->group_rwsem);
    >    <Interrupt>
    >      lock(&sig->group_rwsem);
    >
    >   *** DEADLOCK ***
    >
    >  no locks held by kswapd2/1151.
    >
    >  stack backtrace:
    >  CPU: 30 PID: 1151 Comm: kswapd2 Not tainted 3.10.39+ #4
    >  Call Trace:
    >    dump_stack+0x19/0x1b
    >    print_usage_bug+0x1f7/0x208
    >    mark_lock+0x21d/0x2a0
    >    __lock_acquire+0x52a/0xb60
    >    lock_acquire+0xa2/0x140
    >    down_read+0x51/0xa0
    >    exit_signals+0x24/0x130
    >    do_exit+0xb5/0xa50
    >    kthread+0xdb/0x100
    >    ret_from_fork+0x7c/0xb0
    
    This is because the kswapd thread is still marked as a reclaimer at the
    time of exit.  But because it is exiting, nobody is actually waiting on
    it to make reclaim progress anymore, and it's nothing but a regular
    thread at this point.  Be tidy and strip it of all its powers
    (PF_MEMALLOC, PF_SWAPWRITE, PF_KSWAPD, and the lockdep reclaim state)
    before returning from the thread function.
    
    Signed-off-by: Johannes Weiner <hannes@cmpxchg.org>
    Reported-by: Gu Zheng <guz.fnst@cn.fujitsu.com>
    Cc: Yasuaki Ishimatsu <isimatu.yasuaki@jp.fujitsu.com>
    Cc: Tang Chen <tangchen@cn.fujitsu.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cd909a6dd9fdf3c333257d2bd315becf5fb92588
Author: Kees Cook <keescook@chromium.org>
Date:   Thu Apr 17 13:22:09 2014 -0700

    HID: core: fix validation of report id 0
    
    commit 1b15d2e5b8077670b1e6a33250a0d9577efff4a5 upstream.
    
    Some drivers use the first HID report in the list instead of using an
    index. In these cases, validation uses ID 0, which was supposed to mean
    "first known report". This fixes the problem, which was causing at least
    the lgff family of devices to stop working since hid_validate_values
    was being called with ID 0, but the devices used single numbered IDs
    for their reports:
    
    0x05, 0x01,         /*  Usage Page (Desktop),                   */
    0x09, 0x05,         /*  Usage (Gamepad),                        */
    0xA1, 0x01,         /*  Collection (Application),               */
    0xA1, 0x02,         /*      Collection (Logical),               */
    0x85, 0x01,         /*          Report ID (1),                  */
    ...
    
    Reported-by: Simon Wood <simon@mungewell.org>
    Signed-off-by: Kees Cook <keescook@chromium.org>
    Reviewed-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9164f428a751ef1d4d2c8f361943a09ae2a9c98e
Author: Hugh Dickins <hughd@google.com>
Date:   Wed Jun 4 16:05:33 2014 -0700

    mm: fix sleeping function warning from __put_anon_vma
    
    commit 7f39dda9d86fb4f4f17af0de170decf125726f8c upstream.
    
    Trinity reports BUG:
    
      sleeping function called from invalid context at kernel/locking/rwsem.c:47
      in_atomic(): 0, irqs_disabled(): 0, pid: 5787, name: trinity-c27
    
    __might_sleep < down_write < __put_anon_vma < page_get_anon_vma <
    migrate_pages < compact_zone < compact_zone_order < try_to_compact_pages ..
    
    Right, since conversion to mutex then rwsem, we should not put_anon_vma()
    from inside an rcu_read_lock()ed section: fix the two places that did so.
    And add might_sleep() to anon_vma_free(), as suggested by Peter Zijlstra.
    
    Fixes: 88c22088bf23 ("mm: optimize page_lock_anon_vma() fast-path")
    Reported-by: Dave Jones <davej@redhat.com>
    Signed-off-by: Hugh Dickins <hughd@google.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 981433901d8e675a8441bdc73beb70d39b9dc387
Author: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
Date:   Wed Jun 4 16:11:02 2014 -0700

    mm/memory-failure.c: support use of a dedicated thread to handle SIGBUS(BUS_MCEERR_AO)
    
    commit 3ba08129e38437561df44c36b7ea9081185d5333 upstream.
    
    Currently memory error handler handles action optional errors in the
    deferred manner by default.  And if a recovery aware application wants
    to handle it immediately, it can do it by setting PF_MCE_EARLY flag.
    However, such signal can be sent only to the main thread, so it's
    problematic if the application wants to have a dedicated thread to
    handler such signals.
    
    So this patch adds dedicated thread support to memory error handler.  We
    have PF_MCE_EARLY flags for each thread separately, so with this patch
    AO signal is sent to the thread with PF_MCE_EARLY flag set, not the main
    thread.  If you want to implement a dedicated thread, you call prctl()
    to set PF_MCE_EARLY on the thread.
    
    Memory error handler collects processes to be killed, so this patch lets
    it check PF_MCE_EARLY flag on each thread in the collecting routines.
    
    No behavioral change for all non-early kill cases.
    
    Tony said:
    
    : The old behavior was crazy - someone with a multithreaded process might
    : well expect that if they call prctl(PF_MCE_EARLY) in just one thread, then
    : that thread would see the SIGBUS with si_code = BUS_MCEERR_A0 - even if
    : that thread wasn't the main thread for the process.
    
    [akpm@linux-foundation.org: coding-style fixes]
    Signed-off-by: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
    Reviewed-by: Tony Luck <tony.luck@intel.com>
    Cc: Kamil Iskra <iskra@mcs.anl.gov>
    Cc: Andi Kleen <andi@firstfloor.org>
    Cc: Borislav Petkov <bp@suse.de>
    Cc: Chen Gong <gong.chen@linux.jf.intel.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 965b5a20328b36f97aa1b7f9c03919b8e58f9283
Author: Tony Luck <tony.luck@intel.com>
Date:   Wed Jun 4 16:11:01 2014 -0700

    mm/memory-failure.c: don't let collect_procs() skip over processes for MF_ACTION_REQUIRED
    
    commit 74614de17db6fb472370c426d4f934d8d616edf2 upstream.
    
    When Linux sees an "action optional" machine check (where h/w has reported
    an error that is not in the current execution path) we generally do not
    want to signal a process, since most processes do not have a SIGBUS
    handler - we'd just prematurely terminate the process for a problem that
    they might never actually see.
    
    task_early_kill() decides whether to consider a process - and it checks
    whether this specific process has been marked for early signals with
    "prctl", or if the system administrator has requested early signals for
    all processes using /proc/sys/vm/memory_failure_early_kill.
    
    But for MF_ACTION_REQUIRED case we must not defer.  The error is in the
    execution path of the current thread so we must send the SIGBUS
    immediatley.
    
    Fix by passing a flag argument through collect_procs*() to
    task_early_kill() so it knows whether we can defer or must take action.
    
    Signed-off-by: Tony Luck <tony.luck@intel.com>
    Signed-off-by: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
    Cc: Andi Kleen <andi@firstfloor.org>
    Cc: Borislav Petkov <bp@suse.de>
    Cc: Chen Gong <gong.chen@linux.jf.intel.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6e988c21dd3187395950e38ccaf594ae95632fcc
Author: Tony Luck <tony.luck@intel.com>
Date:   Wed Jun 4 16:10:59 2014 -0700

    mm/memory-failure.c-failure: send right signal code to correct thread
    
    commit a70ffcac741d31a406c1d2b832ae43d658e7e1cf upstream.
    
    When a thread in a multi-threaded application hits a machine check because
    of an uncorrectable error in memory - we want to send the SIGBUS with
    si.si_code = BUS_MCEERR_AR to that thread.  Currently we fail to do that
    if the active thread is not the primary thread in the process.
    collect_procs() just finds primary threads and this test:
    
    	if ((flags & MF_ACTION_REQUIRED) && t == current) {
    
    will see that the thread we found isn't the current thread and so send a
    si.si_code = BUS_MCEERR_AO to the primary (and nothing to the active
    thread at this time).
    
    We can fix this by checking whether "current" shares the same mm with the
    process that collect_procs() said owned the page.  If so, we send the
    SIGBUS to current (with code BUS_MCEERR_AR).
    
    Signed-off-by: Tony Luck <tony.luck@intel.com>
    Signed-off-by: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
    Reported-by: Otto Bruggeman <otto.g.bruggeman@intel.com>
    Cc: Andi Kleen <andi@firstfloor.org>
    Cc: Borislav Petkov <bp@suse.de>
    Cc: Chen Gong <gong.chen@linux.jf.intel.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f4f753ba00cccb170cdd60ad8d4b9ff561676688
Author: Mel Gorman <mgorman@suse.de>
Date:   Wed Jun 4 16:10:16 2014 -0700

    mm: page_alloc: use word-based accesses for get/set pageblock bitmaps
    
    commit e58469bafd0524e848c3733bc3918d854595e20f upstream.
    
    The test_bit operations in get/set pageblock flags are expensive.  This
    patch reads the bitmap on a word basis and use shifts and masks to isolate
    the bits of interest.  Similarly masks are used to set a local copy of the
    bitmap and then use cmpxchg to update the bitmap if there have been no
    other changes made in parallel.
    
    In a test running dd onto tmpfs the overhead of the pageblock-related
    functions went from 1.27% in profiles to 0.5%.
    
    In addition to the performance benefits, this patch closes races that are
    possible between:
    
    a) get_ and set_pageblock_migratetype(), where get_pageblock_migratetype()
       reads part of the bits before and other part of the bits after
       set_pageblock_migratetype() has updated them.
    
    b) set_pageblock_migratetype() and set_pageblock_skip(), where the non-atomic
       read-modify-update set bit operation in set_pageblock_skip() will cause
       lost updates to some bits changed in the set_pageblock_migratetype().
    
    Joonsoo Kim first reported the case a) via code inspection.  Vlastimil
    Babka's testing with a debug patch showed that either a) or b) occurs
    roughly once per mmtests' stress-highalloc benchmark (although not
    necessarily in the same pageblock).  Furthermore during development of
    unrelated compaction patches, it was observed that frequent calls to
    {start,undo}_isolate_page_range() the race occurs several thousands of
    times and has resulted in NULL pointer dereferences in move_freepages()
    and free_one_page() in places where free_list[migratetype] is
    manipulated by e.g.  list_move().  Further debugging confirmed that
    migratetype had invalid value of 6, causing out of bounds access to the
    free_list array.
    
    That confirmed that the race exist, although it may be extremely rare,
    and currently only fatal where page isolation is performed due to
    memory hot remove.  Races on pageblocks being updated by
    set_pageblock_migratetype(), where both old and new migratetype are
    lower MIGRATE_RESERVE, currently cannot result in an invalid value
    being observed, although theoretically they may still lead to
    unexpected creation or destruction of MIGRATE_RESERVE pageblocks.
    Furthermore, things could get suddenly worse when memory isolation is
    used more, or when new migratetypes are added.
    
    After this patch, the race has no longer been observed in testing.
    
    Signed-off-by: Mel Gorman <mgorman@suse.de>
    Acked-by: Vlastimil Babka <vbabka@suse.cz>
    Reported-by: Joonsoo Kim <iamjoonsoo.kim@lge.com>
    Reported-and-tested-by: Vlastimil Babka <vbabka@suse.cz>
    Cc: Johannes Weiner <hannes@cmpxchg.org>
    Cc: Jan Kara <jack@suse.cz>
    Cc: Michal Hocko <mhocko@suse.cz>
    Cc: Hugh Dickins <hughd@google.com>
    Cc: Dave Hansen <dave.hansen@intel.com>
    Cc: Theodore Ts'o <tytso@mit.edu>
    Cc: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
    Cc: Oleg Nesterov <oleg@redhat.com>
    Cc: Rik van Riel <riel@redhat.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 39fe7460cf6c3cd4b9e53d8ee558f8fb4fde5b09
Author: Mel Gorman <mgorman@suse.de>
Date:   Wed Jun 4 16:07:35 2014 -0700

    mm: vmscan: do not throttle based on pfmemalloc reserves if node has no ZONE_NORMAL
    
    commit 675becce15f320337499bc1a9356260409a5ba29 upstream.
    
    throttle_direct_reclaim() is meant to trigger during swap-over-network
    during which the min watermark is treated as a pfmemalloc reserve.  It
    throttes on the first node in the zonelist but this is flawed.
    
    The user-visible impact is that a process running on CPU whose local
    memory node has no ZONE_NORMAL will stall for prolonged periods of time,
    possibly indefintely.  This is due to throttle_direct_reclaim thinking the
    pfmemalloc reserves are depleted when in fact they don't exist on that
    node.
    
    On a NUMA machine running a 32-bit kernel (I know) allocation requests
    from CPUs on node 1 would detect no pfmemalloc reserves and the process
    gets throttled.  This patch adjusts throttling of direct reclaim to
    throttle based on the first node in the zonelist that has a usable
    ZONE_NORMAL or lower zone.
    
    [akpm@linux-foundation.org: coding-style fixes]
    Signed-off-by: Mel Gorman <mgorman@suse.de>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 19801fb4a801cec39a70ff9c0a9c9023bd42a1a1
Author: Tetsuo Handa <penguin-kernel@i-love.sakura.ne.jp>
Date:   Wed Jun 4 16:05:36 2014 -0700

    kthread: fix return value of kthread_create() upon SIGKILL.
    
    commit 8fe6929cfd43c44834858a53e129ffdc7c166298 upstream.
    
    Commit 786235eeba0e ("kthread: make kthread_create() killable") meant
    for allowing kthread_create() to abort as soon as killed by the
    OOM-killer.  But returning -ENOMEM is wrong if killed by SIGKILL from
    userspace.  Change kthread_create() to return -EINTR upon SIGKILL.
    
    Signed-off-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
    Cc: Oleg Nesterov <oleg@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: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9dbfe4e4a6b45aa5d5e67407445cf7bd4bcffcfc
Author: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
Date:   Wed Jun 4 16:05:35 2014 -0700

    hugetlb: restrict hugepage_migration_support() to x86_64
    
    commit c177c81e09e517bbf75b67762cdab1b83aba6976 upstream.
    
    Currently hugepage migration is available for all archs which support
    pmd-level hugepage, but testing is done only for x86_64 and there're
    bugs for other archs.  So to avoid breaking such archs, this patch
    limits the availability strictly to x86_64 until developers of other
    archs get interested in enabling this feature.
    
    Simply disabling hugepage migration on non-x86_64 archs is not enough to
    fix the reported problem where sys_move_pages() hits the BUG_ON() in
    follow_page(FOLL_GET), so let's fix this by checking if hugepage
    migration is supported in vma_migratable().
    
    Signed-off-by: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
    Reported-by: Michael Ellerman <mpe@ellerman.id.au>
    Tested-by: Michael Ellerman <mpe@ellerman.id.au>
    Acked-by: Hugh Dickins <hughd@google.com>
    Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
    Cc: Tony Luck <tony.luck@intel.com>
    Cc: Russell King <rmk@arm.linux.org.uk>
    Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Cc: James Hogan <james.hogan@imgtec.com>
    Cc: Ralf Baechle <ralf@linux-mips.org>
    Cc: David Miller <davem@davemloft.net>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 683ba9dcad6a409736b635efa740679e42210935
Author: Johan Hovold <jhovold@gmail.com>
Date:   Mon May 26 19:23:10 2014 +0200

    USB: option: fix runtime PM handling
    
    commit acf47d4f9c39b1cba467aa9442fc2efe0b1da741 upstream.
    
    Fix potential I/O while runtime suspended due to missing PM operations
    in send_setup.
    
    Fixes: 383cedc3bb43 ("USB: serial: full autosuspend support for the
    option driver")
    
    Signed-off-by: Johan Hovold <jhovold@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8a020be9aa9c82d1bee6fbb738ceecbd33863ce8
Author: Alan Stern <stern@rowland.harvard.edu>
Date:   Tue Jun 3 11:00:27 2014 -0400

    USB: EHCI: avoid BIOS handover on the HASEE E200
    
    commit b0a50e92bda3c4aeb8017d4e6c6e92146ebd5c9b upstream.
    
    Leandro Liptak reports that his HASEE E200 computer hangs when we ask
    the BIOS to hand over control of the EHCI host controller.  This
    definitely sounds like a bug in the BIOS, but at the moment there is
    no way to fix it.
    
    This patch works around the problem by avoiding the handoff whenever
    the motherboard and BIOS version match those of Leandro's computer.
    
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    Reported-by: Leandro Liptak <leandroliptak@gmail.com>
    Tested-by: Leandro Liptak <leandroliptak@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6bb00f370ec2b89ff3e4f1bff6528f7bc192cc65
Author: Paul Bolle <pebolle@tiscali.nl>
Date:   Fri May 16 12:00:57 2014 +0200

    ARM: OMAP: replace checks for CONFIG_USB_GADGET_OMAP
    
    commit 77c2f02edbeda9409a7cf3fd66233015820c213a upstream.
    
    Commit 193ab2a60700 ("usb: gadget: allow multiple gadgets to be built")
    apparently required that checks for CONFIG_USB_GADGET_OMAP would be
    replaced with checks for CONFIG_USB_OMAP. Do so now for the remaining
    checks for CONFIG_USB_GADGET_OMAP, even though these checks have
    basically been broken since v3.1.
    
    And, since we're touching this code, use the IS_ENABLED() macro, so
    things will now (hopefully) also work if USB_OMAP is modular.
    
    Fixes: 193ab2a60700 ("usb: gadget: allow multiple gadgets to be built")
    Signed-off-by: Paul Bolle <pebolle@tiscali.nl>
    Signed-off-by: Tony Lindgren <tony@atomide.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0d8b12fce9dc5fcb05adeae1e39924b746a68685
Author: Felipe Balbi <balbi@ti.com>
Date:   Wed Apr 16 10:30:33 2014 -0500

    usb: dwc3: gadget: clear stall when disabling endpoint
    
    commit 687ef9817df7ed960d14575b9033dde3d04631fe upstream.
    
    so it seems like DWC3 IP doesn't clear stalls
    automatically when we disable an endpoint, because
    of that, we _must_ make sure stalls are cleared
    before clearing the proper bit in DALEPENA register.
    
    Reported-by: Johannes Stezenbach <js@sig21.net>
    Signed-off-by: Felipe Balbi <balbi@ti.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2e739000204f883d8708d2855d57a051c9da66db
Author: Paul Bolle <pebolle@tiscali.nl>
Date:   Mon May 26 23:37:09 2014 +0200

    usb: gadget: rename CONFIG_USB_GADGET_PXA25X
    
    commit d30f2065d6da377cc76771aca5a9850cfca8723b upstream.
    
    Commit 193ab2a60700 ("usb: gadget: allow multiple gadgets to be built")
    basically renamed the Kconfig symbol USB_GADGET_PXA25X to USB_PXA25X. It
    did not rename the related macros in use at that time. Commit
    c0a39151a405 ("ARM: pxa: fix inconsistent CONFIG_USB_PXA27X") did so for
    all but one macro. Rename that last macro too now.
    
    Fixes: 193ab2a60700 ("usb: gadget: allow multiple gadgets to be built")
    Signed-off-by: Paul Bolle <pebolle@tiscali.nl>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fe6fa2465e83ce6aea2fc7d146638e69b0438b90
Author: Alan Stern <stern@rowland.harvard.edu>
Date:   Tue Jun 3 11:11:34 2014 -0400

    USB: usbtest: add a timeout for scatter-gather tests
    
    commit 32b36eeae6a859670d2939a7d6136cb5e9ed64f8 upstream.
    
    In usbtest, tests 5 - 8 use the scatter-gather library in usbcore
    without any sort of timeout.  If there's a problem in the gadget or
    host controller being tested, the test can hang.
    
    This patch adds a 10-second timeout to the tests, so that they will
    fail gracefully with an ETIMEDOUT error instead of hanging.
    
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    Reported-by: Huang Rui <ray.huang@amd.com>
    Tested-by: Huang Rui <ray.huang@amd.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 08dbc4287663f92fa69556a0074076312e64a8e5
Author: Huang Rui <ray.huang@amd.com>
Date:   Mon May 26 10:55:36 2014 +0800

    usb: usbtest: fix unlink write error with pattern 1
    
    commit e4d58f5dcb7d7be45df8def31881ebfae99c75da upstream.
    
    TEST 12 and TEST 24 unlinks the URB write request for N times. When
    host and gadget both initialize pattern 1 (mod 63) data series to
    transfer, the gadget side will complain the wrong data which is not
    expected.  Because in host side, usbtest doesn't fill the data buffer
    as mod 63 and this patch fixed it.
    
    [20285.488974] dwc3 dwc3.0.auto: ep1out-bulk: Transfer Not Ready
    [20285.489181] dwc3 dwc3.0.auto: ep1out-bulk: reason Transfer Not Active
    [20285.489423] dwc3 dwc3.0.auto: ep1out-bulk: req ffff8800aa6cb480 dma aeb50800 length 512 last
    [20285.489727] dwc3 dwc3.0.auto: ep1out-bulk: cmd 'Start Transfer' params 00000000 a9eaf000 00000000
    [20285.490055] dwc3 dwc3.0.auto: Command Complete --> 0
    [20285.490281] dwc3 dwc3.0.auto: ep1out-bulk: Transfer Not Ready
    [20285.490492] dwc3 dwc3.0.auto: ep1out-bulk: reason Transfer Active
    [20285.490713] dwc3 dwc3.0.auto: ep1out-bulk: endpoint busy
    [20285.490909] dwc3 dwc3.0.auto: ep1out-bulk: Transfer Complete
    [20285.491117] dwc3 dwc3.0.auto: request ffff8800aa6cb480 from ep1out-bulk completed 512/512 ===> 0
    [20285.491431] zero gadget: bad OUT byte, buf[1] = 0
    [20285.491605] dwc3 dwc3.0.auto: ep1out-bulk: cmd 'Set Stall' params 00000000 00000000 00000000
    [20285.491915] dwc3 dwc3.0.auto: Command Complete --> 0
    [20285.492099] dwc3 dwc3.0.auto: queing request ffff8800aa6cb480 to ep1out-bulk length 512
    [20285.492387] dwc3 dwc3.0.auto: ep1out-bulk: Transfer Not Ready
    [20285.492595] dwc3 dwc3.0.auto: ep1out-bulk: reason Transfer Not Active
    [20285.492830] dwc3 dwc3.0.auto: ep1out-bulk: req ffff8800aa6cb480 dma aeb51000 length 512 last
    [20285.493135] dwc3 dwc3.0.auto: ep1out-bulk: cmd 'Start Transfer' params 00000000 a9eaf000 00000000
    [20285.493465] dwc3 dwc3.0.auto: Command Complete --> 0
    
    Signed-off-by: Huang Rui <ray.huang@amd.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit af671dd21da6751d7f0512e19facac4e36d74d8c
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Fri May 9 14:59:16 2014 +0300

    applicom: dereferencing NULL on error path
    
    commit 8bab797c6e5724a43b7666ad70860712365cdb71 upstream.
    
    This is a static checker fix.  The "dev" variable is always NULL after
    the while statement so we would be dereferencing a NULL pointer here.
    
    Fixes: 819a3eba4233 ('[PATCH] applicom: fix error handling')
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d78c4fefa3b55f22a2670797951c4fa7e6f1119b
Author: Stephen Boyd <sboyd@codeaurora.org>
Date:   Fri May 23 17:16:53 2014 -0700

    staging/mt29f_spinand: Terminate of match table
    
    commit ffd07de65ef5315053ea16356cd533b7f47c17e9 upstream.
    
    Failure to terminate this match table can lead to boot failures
    depending on where the compiler places the match table.
    
    Cc: Kamlakant Patel <kamlakant.patel@broadcom.com>
    Cc: Mona Anonuevo <manonuevo@micron.com>
    Cc: linux-mtd@lists.infradead.org
    Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6f2f288f2065c3e7b5239c455c75258547f5c9ac
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Mon Apr 7 09:31:21 2014 +0300

    Staging: rtl8188eu: overflow in update_sta_support_rate()
    
    commit 9dbd79aeb9842144d9a114a979a12c0949ee11eb upstream.
    
    The ->SupportedRates[] array has NDIS_802_11_LENGTH_RATES_EX (16)
    elements.  Since "ie_len" comes from then network and can go up to 255
    then it means we should add a range check to prevent memory corruption.
    
    Fixes: d6846af679e0 ('staging: r8188eu: Add files for new driver - part 7')
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a71d6ec8c874049a24d36f70dd832c73bbbc4719
Author: Paul Bolle <pebolle@tiscali.nl>
Date:   Mon May 26 21:47:11 2014 +0200

    staging: tidspbridge: check for CONFIG_SND_OMAP_SOC_MCBSP
    
    commit d3921a03a89acb1b9ca599590c0131c89f8737d8 upstream.
    
    Commit d0f47ff17f29 ("ASoC: OMAP: Build config cleanup for McBSP")
    removed the Kconfig symbol OMAP_MCBSP. It left two checks for
    CONFIG_OMAP_MCBSP untouched.
    
    Convert these to checks for CONFIG_SND_OMAP_SOC_MCBSP. That must be
    correct, since that re-enables calls to functions that are all found in
    sound/soc/omap/mcbsp.c. And that file is built only if
    CONFIG_SND_OMAP_SOC_MCBSP is defined.
    
    Fixes: d0f47ff17f29 ("ASoC: OMAP: Build config cleanup for McBSP")
    Signed-off-by: Paul Bolle <pebolle@tiscali.nl>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e248558984dc61187b315fc493ad397bbb4c15cb
Author: Antoine Ténart <antoine.tenart@free-electrons.com>
Date:   Mon May 12 14:56:28 2014 +0200

    phy: exynos-mipi-video: fix check on array index
    
    commit 98c3b32229f2685c13436b652b8959c99dfc5a31 upstream.
    
    The phys array is of size EXYNOS_MIPI_PHYS_NUM. Trying to access the
    index EXYNOS_MIPI_PHYS_NUM should return an error.
    
    Fixes: 069d2e26e9d6 "phy: Add driver for Exynos MIPI CSIS/DSIM DPHYs"
    
    Signed-off-by: Antoine Ténart <antoine.tenart@free-electrons.com>
    Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 57a30a41fd5191c6eef3e868e2ae2d365c74b0f2
Author: Krzysztof Kozlowski <k.kozlowski@samsung.com>
Date:   Fri Apr 18 16:47:30 2014 +0200

    extcon: max14577: Properly handle regmap_irq_get_virq error
    
    commit 369afd4ba22f5b8de0c9229b6e62b3f9e2207034 upstream.
    
    The regmap_irq_get_virq may return 0 or -EINVAL on error. Fail the probe
    in both situations.
    
    Signed-off-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
    Signed-off-by: Chanwoo Choi <cw00.choi@samsung.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b6687c4967b8520ef984bb63036422339266b3b9
Author: Krzysztof Kozlowski <k.kozlowski@samsung.com>
Date:   Wed Apr 9 11:56:09 2014 +0200

    extcon: max14577: Fix probe failure on successful work queue
    
    commit 12adef5b49e98eb181b4163c36e2998169e1379b upstream.
    
    In probe the driver queued delayed work for cable detection and
    returned the result of queue_delayed_work() call. However the return
    value of queue_delayed_work() does not indicate an error and in normal
    condition it returns true which means successful work queue.
    This effectively resulted in probe failure:
    [    2.088204] max14577-muic: probe of max77836-muic failed with error 1
    
    Signed-off-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
    Fixes: 962e56bfcf0b ("extcon: max14577: Add extcon-max14577 driver...")
    Signed-off-by: Chanwoo Choi <cw00.choi@samsung.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ef06d6dbcf665f27f6fbbafcd66e8d06ddb5480e
Author: Krzysztof Kozlowski <k.kozlowski@samsung.com>
Date:   Wed Apr 9 15:20:12 2014 +0200

    extcon: max77693: Fix two NULL pointer exceptions on missing pdata
    
    commit d5653f2b7304f05eeb45d84f123cf02f840b8537 upstream.
    
    Fix NULL pointer exceptions when platform data is not supplied.
    
    Trace of one exception:
    Unable to handle kernel NULL pointer dereference at virtual address 00000008
    pgd = c0004000
    [00000008] *pgd=00000000
    Internal error: Oops: 5 [#1] PREEMPT SMP ARM
    Modules linked in:
    CPU: 2 PID: 1 Comm: swapper/0 Not tainted 3.14.0-12045-gead5dd4687a6-dirty #1628
    task: eea80000 ti: eea88000 task.ti: eea88000
    PC is at max77693_muic_probe+0x27c/0x528
    LR is at regmap_write+0x50/0x60
    pc : [<c041d1c8>]    lr : [<c02eba60>]    psr: 20000113
    sp : eea89e38  ip : 00000000  fp : c098a834
    r10: ee1a5a10  r9 : 00000005  r8 : c098a83c
    r7 : 0000000a  r6 : c098a774  r5 : 00000005  r4 : eeb006d0
    r3 : c0697bd8  r2 : 00000000  r1 : 00000001  r0 : 00000000
    Flags: nzCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment kernel
    Control: 10c5387d  Table: 4000404a  DAC: 00000015
    Process swapper/0 (pid: 1, stack limit = 0xeea88240)
    Stack: (0xeea89e38 to 0xeea8a000)
    9e20:                                                       c08499fc eeb006d0
    9e40: 00000000 00000000 c0915f98 00000001 00000000 ee1a5a10 c098a730 c09a88b8
    9e60: 00000000 c098a730 c0915f98 00000000 00000000 c02d6aa0 c02d6a88 ee1a5a10
    9e80: c0a712c8 c02d54e4 00001204 c0628b00 ee1a5a10 c098a730 ee1a5a44 00000000
    9ea0: eea88000 c02d57b4 00000000 c098a730 c02d5728 c02d3a24 ee813e5c eeb9d534
    9ec0: c098a730 ee22f700 c097c720 c02d4b14 c08174ec c098a730 00000006 c098a730
    9ee0: 00000006 c092fd30 c09b8500 c02d5df8 00000000 c093cbb8 00000006 c0008928
    9f00: 000000c3 ef7fc785 00000000 ef7fc794 00000000 c08af968 00000072 eea89f30
    9f20: ef7fc85e c065f198 000000c3 c003e87c 00000003 00000000 c092fd3c 00000000
    9f40: c08af618 c0826d58 00000006 00000006 c0956f58 c093cbb8 00000006 c092fd30
    9f60: c09b8500 000000c3 c092fd3c c08e8510 00000000 c08e8bb0 00000006 00000006
    9f80: c08e8510 c0c0c0c0 00000000 c0628fac 00000000 00000000 00000000 00000000
    9fa0: 00000000 c0628fb4 00000000 c000f038 00000000 00000000 00000000 00000000
    9fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
    9fe0: 00000000 00000000 00000000 00000000 00000013 00000000 c0c0c0c0 c0c0c0c0
    [<c041d1c8>] (max77693_muic_probe) from [<c02d6aa0>] (platform_drv_probe+0x18/0x48)
    [<c02d6aa0>] (platform_drv_probe) from [<c02d54e4>] (driver_probe_device+0x140/0x384)
    [<c02d54e4>] (driver_probe_device) from [<c02d57b4>] (__driver_attach+0x8c/0x90)
    [<c02d57b4>] (__driver_attach) from [<c02d3a24>] (bus_for_each_dev+0x54/0x88)
    [<c02d3a24>] (bus_for_each_dev) from [<c02d4b14>] (bus_add_driver+0xe8/0x204)
    [<c02d4b14>] (bus_add_driver) from [<c02d5df8>] (driver_register+0x78/0xf4)
    [<c02d5df8>] (driver_register) from [<c0008928>] (do_one_initcall+0xc4/0x174)
    [<c0008928>] (do_one_initcall) from [<c08e8bb0>] (kernel_init_freeable+0xfc/0x1c8)
    [<c08e8bb0>] (kernel_init_freeable) from [<c0628fb4>] (kernel_init+0x8/0xec)
    [<c0628fb4>] (kernel_init) from [<c000f038>] (ret_from_fork+0x14/0x3c)
    Code: caffffe7 e59d200c e3550001 b3a05001 (e5923008)
    ---[ end trace 85db969ce011bde7 ]---
    
    Signed-off-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
    Fixes: 190d7cfc8632
    Signed-off-by: Chanwoo Choi <cw00.choi@samsung.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 915772561648ae58c00b996187bbf7bc21717212
Author: Krzysztof Kozlowski <k.kozlowski@samsung.com>
Date:   Wed Apr 9 15:20:14 2014 +0200

    extcon: max8997: Fix NULL pointer exception on missing pdata
    
    commit dfee4111febf3d9ef3a640b2cd6205c75f4e7e3d upstream.
    
    Fix NULL pointer exception when platform data is not supplied. The
    driver dereferenced pdata pointer where it could be NULL.
    
    Signed-off-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
    Fixes: 810d601f07c
    Signed-off-by: Chanwoo Choi <cw00.choi@samsung.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit db2382a8254e7e76c64345dc7b2d48693b1e2067
Author: Johan Hovold <jhovold@gmail.com>
Date:   Thu May 8 10:09:23 2014 +0200

    net: cpsw: fix null dereference at probe
    
    commit 6954cc1f238199e971ec905c5cc87120806ac981 upstream.
    
    Fix null-pointer dereference at probe when the mdio platform device is
    missing (e.g. when it has been disabled in DT).
    
    Signed-off-by: Johan Hovold <jhovold@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f10e9cf1570759f28ab2591ca3800bc07514287a
Author: Ursula Braun <ursula.braun@de.ibm.com>
Date:   Tue May 13 14:38:02 2014 +0200

    af_iucv: wrong mapping of sent and confirmed skbs
    
    commit f5738e2ef88070ef1372e6e718124d88e9abe4ac upstream.
    
    When sending data through IUCV a MESSAGE COMPLETE interrupt
    signals that sent data memory can be freed or reused again.
    With commit f9c41a62bba3f3f7ef3541b2a025e3371bcbba97
    "af_iucv: fix recvmsg by replacing skb_pull() function" the
    MESSAGE COMPLETE callback iucv_callback_txdone() identifies
    the wrong skb as being confirmed, which leads to data corruption.
    This patch fixes the skb mapping logic in iucv_callback_txdone().
    
    Signed-off-by: Ursula Braun <ursula.braun@de.ibm.com>
    Signed-off-by: Frank Blaschka <frank.blaschka@de.ibm.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8a478b1a7fd69e567e07ed4da23d3b3572fa728c
Author: Stephane Grosjean <s.grosjean@peak-system.com>
Date:   Tue May 20 11:38:56 2014 +0200

    can: peak_pci: prevent use after free at netdev removal
    
    commit 0b5a958cf4df3a5cd578b861471e62138f55c85e upstream.
    
    As remarked by Christopher R. Baker in his post at
    
    http://marc.info/?l=linux-can&m=139707295706465&w=2
    
    there's a possibility for an use after free condition at device removal.
    
    This simplified patch introduces an additional variable to prevent the issue.
    Thanks for catching this.
    
    Reported-by: Christopher R. Baker <cbaker@rec.ri.cmu.edu>
    Signed-off-by: Stephane Grosjean <s.grosjean@peak-system.com>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit acdad30d78a68bce2208131523c00d341bb3d914
Author: Johan Hovold <jhovold@gmail.com>
Date:   Thu May 8 10:09:22 2014 +0200

    Revert "net: eth: cpsw: Correctly attach to GPIO bitbang MDIO driver"
    
    commit 59993f48b38fd46863b23bb1bb1dc3291e7278fb upstream.
    
    This reverts commit f8d56d8f892be43a2404356073e16401eb5a42e6 ("net:
     eth: cpsw: Correctly attach to GPIO bitbang MDIO driver").
    
    Fix potential null-pointer dereference at probe if the mdio-gpio device
    has not been successfully probed yet.
    
    The offending commit is plain wrong for a number of reasons. First of
    all it accesses internal driver data of an unrelated device. Neither
    does it check that the data is non-null (which it is in case the device
    has not been probed yet).
    
    Furthermore, the decision on whether to treat any driver data according
    to the mdio-gpio driver's internals is made based on the node name. But
    the name is not compared against "mdio" which is the normal name for the
    node, but rather against "gpio" which the node does not have to be named
    (and shouldn't be according to the binding documentation). [ If this
    hack is to be kept out-of-tree it should at least be matching against
    the compatible property. ]
    
    Cc: Stefan Roese <sr@denx.de>
    Signed-off-by: Johan Hovold <jhovold@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>