commit 9182148a5315d4b1de68ac74fd54cbb5da5a3703
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Wed May 6 21:56:44 2015 +0200

    Linux 3.10.77

commit e6095e729fde00eff27d6a04b1173340b20d274f
Author: Guenter Roeck <linux@roeck-us.net>
Date:   Mon May 4 21:42:41 2015 -0700

    s390: Fix build error
    
    s390 images fail to build in 3.10 with
    
    arch/s390/kernel/suspend.c: In function 'pfn_is_nosave':
    arch/s390/kernel/suspend.c:147:10: error: 'ipl_info' undeclared
    arch/s390/kernel/suspend.c:147:27: error: 'IPL_TYPE_NSS' undeclared
    
    due to a missing include file.
    
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e034445e41bcaa968e8dc7721f5a581d5db34bff
Author: Geert Uytterhoeven <geert@linux-m68k.org>
Date:   Thu Oct 9 15:30:30 2014 -0700

    nosave: consolidate __nosave_{begin,end} in <asm/sections.h>
    
    commit 7f8998c7aef3ac9c5f3f2943e083dfa6302e90d0 upstream.
    
    The different architectures used their own (and different) declarations:
    
        extern __visible const void __nosave_begin, __nosave_end;
        extern const void __nosave_begin, __nosave_end;
        extern long __nosave_begin, __nosave_end;
    
    Consolidate them using the first variant in <asm/sections.h>.
    
    Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
    Cc: Russell King <linux@arm.linux.org.uk>
    Cc: Ralf Baechle <ralf@linux-mips.org>
    Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
    Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Cc: "David S. Miller" <davem@davemloft.net>
    Cc: Guan Xuetao <gxt@mprc.pku.edu.cn>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: "H. Peter Anvin" <hpa@zytor.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 b0635e862c10d47ee5f13d0422f7bc9da718bab4
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Thu Apr 16 12:48:35 2015 -0700

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

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

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

commit 7725bb06eba0b24a925c0739c117c907d6c59613
Author: Nicolas Iooss <nicolas.iooss_linux@m4x.org>
Date:   Fri Mar 13 15:17:14 2015 +0800

    wl18xx: show rx_frames_per_rates as an array as it really is
    
    commit a3fa71c40f1853d0c27e8f5bc01a722a705d9682 upstream.
    
    In struct wl18xx_acx_rx_rate_stat, rx_frames_per_rates field is an
    array, not a number.  This means WL18XX_DEBUGFS_FWSTATS_FILE can't be
    used to display this field in debugfs (it would display a pointer, not
    the actual data).  Use WL18XX_DEBUGFS_FWSTATS_FILE_ARRAY instead.
    
    This bug has been found by adding a __printf attribute to
    wl1271_format_buffer.  gcc complained about "format '%u' expects
    argument of type 'unsigned int', but argument 5 has type 'u32 *'".
    
    Fixes: c5d94169e818 ("wl18xx: use new fw stats structures")
    Signed-off-by: Nicolas Iooss <nicolas.iooss_linux@m4x.org>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e60e4dc082ca9c63d2113be4be5ac4cf3fd2f2a8
Author: mancha security <mancha1@zoho.com>
Date:   Wed Mar 18 18:47:25 2015 +0100

    lib: memzero_explicit: use barrier instead of OPTIMIZER_HIDE_VAR
    
    commit 0b053c9518292705736329a8fe20ef4686ffc8e9 upstream.
    
    OPTIMIZER_HIDE_VAR(), as defined when using gcc, is insufficient to
    ensure protection from dead store optimization.
    
    For the random driver and crypto drivers, calls are emitted ...
    
      $ gdb vmlinux
      (gdb) disassemble memzero_explicit
      Dump of assembler code for function memzero_explicit:
        0xffffffff813a18b0 <+0>:	push   %rbp
        0xffffffff813a18b1 <+1>:	mov    %rsi,%rdx
        0xffffffff813a18b4 <+4>:	xor    %esi,%esi
        0xffffffff813a18b6 <+6>:	mov    %rsp,%rbp
        0xffffffff813a18b9 <+9>:	callq  0xffffffff813a7120 <memset>
        0xffffffff813a18be <+14>:	pop    %rbp
        0xffffffff813a18bf <+15>:	retq
      End of assembler dump.
    
      (gdb) disassemble extract_entropy
      [...]
        0xffffffff814a5009 <+313>:	mov    %r12,%rdi
        0xffffffff814a500c <+316>:	mov    $0xa,%esi
        0xffffffff814a5011 <+321>:	callq  0xffffffff813a18b0 <memzero_explicit>
        0xffffffff814a5016 <+326>:	mov    -0x48(%rbp),%rax
      [...]
    
    ... but in case in future we might use facilities such as LTO, then
    OPTIMIZER_HIDE_VAR() is not sufficient to protect gcc from a possible
    eviction of the memset(). We have to use a compiler barrier instead.
    
    Minimal test example when we assume memzero_explicit() would *not* be
    a call, but would have been *inlined* instead:
    
      static inline void memzero_explicit(void *s, size_t count)
      {
        memset(s, 0, count);
        <foo>
      }
    
      int main(void)
      {
        char buff[20];
    
        snprintf(buff, sizeof(buff) - 1, "test");
        printf("%s", buff);
    
        memzero_explicit(buff, sizeof(buff));
        return 0;
      }
    
    With <foo> := OPTIMIZER_HIDE_VAR():
    
      (gdb) disassemble main
      Dump of assembler code for function main:
      [...]
       0x0000000000400464 <+36>:	callq  0x400410 <printf@plt>
       0x0000000000400469 <+41>:	xor    %eax,%eax
       0x000000000040046b <+43>:	add    $0x28,%rsp
       0x000000000040046f <+47>:	retq
      End of assembler dump.
    
    With <foo> := barrier():
    
      (gdb) disassemble main
      Dump of assembler code for function main:
      [...]
       0x0000000000400464 <+36>:	callq  0x400410 <printf@plt>
       0x0000000000400469 <+41>:	movq   $0x0,(%rsp)
       0x0000000000400471 <+49>:	movq   $0x0,0x8(%rsp)
       0x000000000040047a <+58>:	movl   $0x0,0x10(%rsp)
       0x0000000000400482 <+66>:	xor    %eax,%eax
       0x0000000000400484 <+68>:	add    $0x28,%rsp
       0x0000000000400488 <+72>:	retq
      End of assembler dump.
    
    As can be seen, movq, movq, movl are being emitted inlined
    via memset().
    
    Reference: http://thread.gmane.org/gmane.linux.kernel.cryptoapi/13764/
    Fixes: d4c5efdb9777 ("random: add and use memzero_explicit() for clearing data")
    Cc: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: mancha security <mancha1@zoho.com>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Acked-by: Hannes Frederic Sowa <hannes@stressinduktion.org>
    Acked-by: Stephan Mueller <smueller@chronox.de>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

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

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

commit 61ea92b94820a4728f6ad1316a22d9dc0b9b4289
Author: Calvin Owens <calvinowens@fb.com>
Date:   Tue Jan 13 13:16:18 2015 -0800

    ksoftirqd: Enable IRQs and call cond_resched() before poking RCU
    
    commit 28423ad283d5348793b0c45cc9b1af058e776fd6 upstream.
    
    While debugging an issue with excessive softirq usage, I encountered the
    following note in commit 3e339b5dae24a706 ("softirq: Use hotplug thread
    infrastructure"):
    
        [ paulmck: Call rcu_note_context_switch() with interrupts enabled. ]
    
    ...but despite this note, the patch still calls RCU with IRQs disabled.
    
    This seemingly innocuous change caused a significant regression in softirq
    CPU usage on the sending side of a large TCP transfer (~1 GB/s): when
    introducing 0.01% packet loss, the softirq usage would jump to around 25%,
    spiking as high as 50%. Before the change, the usage would never exceed 5%.
    
    Moving the call to rcu_note_context_switch() after the cond_sched() call,
    as it was originally before the hotplug patch, completely eliminated this
    problem.
    
    Signed-off-by: Calvin Owens <calvinowens@fb.com>
    Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
    Signed-off-by: Mike Galbraith <mgalbraith@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

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

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

commit 10e30152633a23d3da2326ff23f4b0b5fc1e94ce
Author: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Date:   Tue Apr 21 09:49:11 2015 -0700

    drm/i915: cope with large i2c transfers
    
    commit 9535c4757b881e06fae72a857485ad57c422b8d2 upstream.
    
    The hardware, according to the specs, is limited to 256 byte transfers,
    and current driver has no protections in case users attempt to do larger
    transfers. The code will just stomp over status register and mayhem
    ensues.
    
    Let's split larger transfers into digestable chunks. Doing this allows
    Atmel MXT driver on Pixel 1 function properly (it hasn't since commit
    9d8dc3e529a19e427fd379118acd132520935c5d "Input: atmel_mxt_ts -
    implement T44 message handling" which tries to consume multiple
    touchscreen/touchpad reports in a single transaction).
    
    Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Jani Nikula <jani.nikula@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

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

    drm/radeon: fix doublescan modes (v2)
    
    commit fd99a0943ffaa0320ea4f69d09ed188f950c0432 upstream.
    
    Use the correct flags for atom.
    
    v2: handle DRM_MODE_FLAG_DBLCLK
    
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0001a0ca47f3d5e7c97ae4e984166175b863c698
Author: Mark Brown <broonie@kernel.org>
Date:   Wed Apr 15 19:18:39 2015 +0100

    i2c: core: Export bus recovery functions
    
    commit c1c21f4e60ed4523292f1a89ff45a208bddd3849 upstream.
    
    Current -next fails to link an ARM allmodconfig because drivers that use
    the core recovery functions can be built as modules but those functions
    are not exported:
    
    ERROR: "i2c_generic_gpio_recovery" [drivers/i2c/busses/i2c-davinci.ko] undefined!
    ERROR: "i2c_generic_scl_recovery" [drivers/i2c/busses/i2c-davinci.ko] undefined!
    ERROR: "i2c_recover_bus" [drivers/i2c/busses/i2c-davinci.ko] undefined!
    
    Add exports to fix this.
    
    Fixes: 5f9296ba21b3c (i2c: Add bus recovery infrastructure)
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

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

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

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

    IB/core: don't disallow registering region starting at 0x0
    
    commit 66578b0b2f69659f00b6169e6fe7377c4b100d18 upstream.
    
    In a call to ib_umem_get(), if address is 0x0 and size is
    already page aligned, check added in commit 8494057ab5e4
    ("IB/uverbs: Prevent integer overflow in ib_umem_get address
    arithmetic") will refuse to register a memory region that
    could otherwise be valid (provided vm.mmap_min_addr sysctl
    and mmap_low_allowed SELinux knobs allow userspace to map
    something at address 0x0).
    
    This patch allows back such registration: ib_umem_get()
    should probably don't care of the base address provided it
    can be pinned with get_user_pages().
    
    There's two possible overflows, in (addr + size) and in
    PAGE_ALIGN(addr + size), this patch keep ensuring none
    of them happen while allowing to pin memory at address
    0x0. Anyway, the case of size equal 0 is no more (partially)
    handled as 0-length memory region are disallowed by an
    earlier check.
    
    Link: http://mid.gmane.org/cover.1428929103.git.ydroneaud@opteya.com
    Cc: Shachar Raindel <raindel@mellanox.com>
    Cc: Jack Morgenstein <jackm@mellanox.com>
    Cc: Or Gerlitz <ogerlitz@mellanox.com>
    Signed-off-by: Yann Droneaud <ydroneaud@opteya.com>
    Reviewed-by: Sagi Grimberg <sagig@mellanox.com>
    Reviewed-by: Haggai Eran <haggaie@mellanox.com>
    Signed-off-by: Doug Ledford <dledford@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

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

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

commit 035d9f212c511009f13a6b26d9a3c2777d414804
Author: Ezequiel Garcia <ezequiel@vanguardiasur.com.ar>
Date:   Tue Mar 10 11:37:14 2015 -0300

    stk1160: Make sure current buffer is released
    
    commit aeff09276748b66072f2db2e668cec955cf41959 upstream.
    
    The available (i.e. not used) buffers are returned by stk1160_clear_queue(),
    on the stop_streaming() path. However, this is insufficient and the current
    buffer must be released as well. Fix it.
    
    Signed-off-by: Ezequiel Garcia <ezequiel@vanguardiasur.com.ar>
    Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 62d37cc41178d2f0f8df6785e7a89e123154b278
Author: James Bottomley <JBottomley@Odin.com>
Date:   Wed Apr 15 22:16:01 2015 -0700

    mvsas: fix panic on expander attached SATA devices
    
    commit 56cbd0ccc1b508de19561211d7ab9e1c77e6b384 upstream.
    
    mvsas is giving a General protection fault when it encounters an expander
    attached ATA device.  Analysis of mvs_task_prep_ata() shows that the driver is
    assuming all ATA devices are locally attached and obtaining the phy mask by
    indexing the local phy table (in the HBA structure) with the phy id.  Since
    expanders have many more phys than the HBA, this is causing the index into the
    HBA phy table to overflow and returning rubbish as the pointer.
    
    mvs_task_prep_ssp() instead does the phy mask using the port properties.
    Mirror this in mvs_task_prep_ata() to fix the panic.
    
    Reported-by: Adam Talbot <ajtalbot1@gmail.com>
    Tested-by: Adam Talbot <ajtalbot1@gmail.com>
    Signed-off-by: James Bottomley <JBottomley@Odin.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

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

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

commit a2ed2ed6fe49a3ffe9fba835c3a11c0e73d0c4cc
Author: Max Filippov <jcmvbkbc@gmail.com>
Date:   Fri Feb 27 11:02:38 2015 +0300

    xtensa: provide __NR_sync_file_range2 instead of __NR_sync_file_range
    
    commit 01e84c70fe40c8111f960987bcf7f931842e6d07 upstream.
    
    xtensa actually uses sync_file_range2 implementation, so it should
    define __NR_sync_file_range2 as other architectures that use that
    function. That fixes userspace interface (that apparently never worked)
    and avoids special-casing xtensa in libc implementations.
    See the thread ending at
    http://lists.busybox.net/pipermail/uclibc/2015-February/048833.html
    for more details.
    
    Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e86de8b5eaf5415ab76cce33de00ad21e78c83e7
Author: Max Filippov <jcmvbkbc@gmail.com>
Date:   Fri Feb 27 06:28:00 2015 +0300

    xtensa: xtfpga: fix hardware lockup caused by LCD driver
    
    commit 4949009eb8d40a441dcddcd96e101e77d31cf1b2 upstream.
    
    LCD driver is always built for the XTFPGA platform, but its base address
    is not configurable, and is wrong for ML605/KC705. Its initialization
    locks up KC705 board hardware.
    
    Make the whole driver optional, and its base address and bus width
    configurable. Implement 4-bit bus access method.
    
    Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

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

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

commit 1c9b773d9183be9a8f36a9646910cc37d7578757
Author: Guenter Roeck <linux@roeck-us.net>
Date:   Wed Apr 22 22:23:54 2015 -0700

    drivers: parport: Kconfig: exclude arm64 for PARPORT_PC
    
    Fix build problem seen with arm64:allmodconfig.
    
    drivers/parport/parport_pc.c:67:25: fatal error: asm/parport.h: No such file or
    directory
    
    arm64 does not support PARPORT_PC.
    
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

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

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

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

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

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

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

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

    UBI: fix out of bounds write
    
    commit d74adbdb9abf0d2506a6c4afa534d894f28b763f upstream.
    
    If aeb->len >= vol->reserved_pebs, we should not be writing aeb into the
    PEB->LEB mapping.
    
    Caught by Coverity, CID #711212.
    
    Signed-off-by: Brian Norris <computersforpeace@gmail.com>
    Signed-off-by: Richard Weinberger <richard@nod.at>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

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

    UBI: account for bitflips in both the VID header and data
    
    commit 8eef7d70f7c6772c3490f410ee2bceab3b543fa1 upstream.
    
    We are completely discarding the earlier value of 'bitflips', which
    could reflect a bitflip found in ubi_io_read_vid_hdr(). Let's use the
    bitwise OR of header and data 'bitflip' statuses instead.
    
    Coverity CID #1226856
    
    Signed-off-by: Brian Norris <computersforpeace@gmail.com>
    Signed-off-by: Richard Weinberger <richard@nod.at>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bc7df9868f9e35cd883d7cb61bbf60de2413c450
Author: Thomas D <whissi@whissi.de>
Date:   Mon Jan 5 21:37:23 2015 +0100

    tools/power turbostat: Use $(CURDIR) instead of $(PWD) and add support for O= option in Makefile
    
    commit f82263c6989c31ae9b94cecddffb29dcbec38710 upstream.
    
    Since commit ee0778a30153
    ("tools/power: turbostat: make Makefile a bit more capable")
    turbostat's Makefile is using
    
      [...]
      BUILD_OUTPUT    := $(PWD)
      [...]
    
    which obviously causes trouble when building "turbostat" with
    
      make -C /usr/src/linux/tools/power/x86/turbostat ARCH=x86 turbostat
    
    because GNU make does not update nor guarantee that $PWD is set.
    
    This patch changes the Makefile to use $CURDIR instead, which GNU make
    guarantees to set and update (i.e. when using "make -C ...") and also
    adds support for the O= option (see "make help" in your root of your
    kernel source tree for more details).
    
    Link: https://bugs.gentoo.org/show_bug.cgi?id=533918
    Fixes: ee0778a30153 ("tools/power: turbostat: make Makefile a bit more capable")
    Signed-off-by: Thomas D. <whissi@whissi.de>
    Cc: Mark Asselstine <mark.asselstine@windriver.com>
    Signed-off-by: Len Brown <len.brown@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

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

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

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

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

commit 9818f16f1af710d6475ad73d589903914e4584cd
Author: Chen Gang <gang.chen@asianux.com>
Date:   Tue May 21 10:46:05 2013 +0100

    arm64: kernel: compiling issue, need delete read_current_timer()
    
    commit 6916b14ea140ff5c915895eefe9431888a39a84d upstream.
    
    Under arm64, we will calibrate the delay loop statically using a known
    timer frequency, so delete read_current_timer(), or it will cause
    compiling issue with allmodconfig.
    
    The related error:
      ERROR: "read_current_timer" [lib/rbtree_test.ko] undefined!
      ERROR: "read_current_timer" [lib/interval_tree_test.ko] undefined!
      ERROR: "read_current_timer" [fs/ext4/ext4.ko] undefined!
      ERROR: "read_current_timer" [crypto/tcrypt.ko] undefined!
    
    Signed-off-by: Chen Gang <gang.chen@asianux.com>
    Acked-by: Marc Zyngier <marc.zyngier@arm.com>
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    Cc: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d821f4be02a54eba7ef6d69f051f8a79aac09096
Author: Mark Brown <broonie@linaro.org>
Date:   Tue Dec 17 23:37:01 2013 +0000

    video: vgacon: Don't build on arm64
    
    commit ee23794b86689e655cedd616e98c03bc3c74f5ec upstream.
    
    arm64 is unlikely to have a VGA console and does not export screen_info
    causing build failures if the driver is build, for example in all*config.
    Add a dependency on !ARM64 to prevent this.
    
    This list is getting quite long, it may be easier to depend on a symbol
    which architectures that do support the driver can select.
    
    Signed-off-by: Mark Brown <broonie@linaro.org>
    [tomi.valkeinen@ti.com: moved && to first modified line]
    Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
    Cc: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 55ce22eeb9e8090ccef3de9c8129046a4589de63
Author: Geert Uytterhoeven <geert@linux-m68k.org>
Date:   Fri May 17 11:04:44 2013 +0200

    console: Disable VGA text console support on cris
    
    commit 3535629264e69ddbec0bd44b6f9a119947fbe4e2 upstream.
    
    Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
    Cc: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7a9a57cb8d0311a007c5e3f64b93bcf0d46038f2
Author: Chen Gang <gang.chen@asianux.com>
Date:   Fri Aug 30 12:09:57 2013 +0800

    drivers: parport: Kconfig: exclude h8300 for PARPORT_PC
    
    commit d94bb2d756e525a7c67fa71762227533d48b03c9 upstream.
    
    h8300 does not support PARPORT_PC.
    
    The related error (with allmodconfig for h8300):
    
        CC [M]  drivers/parport/parport_pc.o
      drivers/parport/parport_pc.c:67:25: fatal error: asm/parport.h: No such file or directory
    
    Signed-off-by: Chen Gang <gang.chen@asianux.com>
    Cc: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bd147d13c83f04522ef5693845926713bb10e360
Author: Geert Uytterhoeven <geert@linux-m68k.org>
Date:   Wed May 15 22:51:15 2013 +0200

    parport: disable PC-style parallel port support on cris
    
    commit cb1ff5f90e1550d5752521205506b99f1aa8b1e0 upstream.
    
    Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
    Cc: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4cbb68afc05fe04c35f1b742639a9e4660219cd0
Author: Marek Vasut <marex@denx.de>
Date:   Thu Mar 26 02:16:06 2015 +0100

    rtlwifi: rtl8192cu: Add new device ID
    
    commit 9374e7d2fdcad3c36dafc8d3effd554bc702c4b6 upstream.
    
    Add new ID for ASUS N10 WiFi dongle.
    
    Signed-off-by: Marek Vasut <marex@denx.de>
    Tested-by: Marek Vasut <marex@denx.de>
    Cc: Larry Finger <Larry.Finger@lwfinger.net>
    Cc: John W. Linville <linville@tuxdriver.com>
    Acked-by: Larry Finger <Larry.Finger@lwfinger.net>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

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

    rtlwifi: rtl8192cu: Add new USB ID
    
    commit 2f92b314f4daff2117847ac5343c54d3d041bf78 upstream.
    
    USB ID 2001:330d is used for a D-Link DWA-131.
    
    Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

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

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

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

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

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

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

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

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

commit e217fcc13682beef6eaafbb5a419e6b50ddf94b9
Author: Felipe Balbi <balbi@ti.com>
Date:   Fri Feb 13 15:38:33 2015 -0600

    usb: core: hub: use new USB_RESUME_TIMEOUT
    
    commit bbc78c07a51f6fd29c227b1220a9016e585358ba upstream.
    
    Make sure we're using the new macro, so our
    resume signaling will always pass certification.
    
    Signed-off-by: Felipe Balbi <balbi@ti.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e0565f62a0e1ebfe6fa62e633f75c2ec8be522c9
Author: Felipe Balbi <balbi@ti.com>
Date:   Fri Feb 13 15:00:38 2015 -0600

    usb: host: sl811: use new USB_RESUME_TIMEOUT
    
    commit 08debfb13b199716da6153940c31968c556b195d upstream.
    
    Make sure we're using the new macro, so our
    resume signaling will always pass certification.
    
    Signed-off-by: Felipe Balbi <balbi@ti.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 181d303cb1c16ef27ad48314675cbe47e6e45ffb
Author: Felipe Balbi <balbi@ti.com>
Date:   Fri Feb 13 14:39:13 2015 -0600

    usb: host: xhci: use new USB_RESUME_TIMEOUT
    
    commit b9e451885deb6262dbaf5cd14aa77d192d9ac759 upstream.
    
    Make sure we're using the new macro, so our
    resume signaling will always pass certification.
    
    Acked-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Signed-off-by: Felipe Balbi <balbi@ti.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 38faf1a5651345e72bf176a45877400329fc411d
Author: Felipe Balbi <balbi@ti.com>
Date:   Fri Feb 13 14:50:10 2015 -0600

    usb: host: isp116x: use new USB_RESUME_TIMEOUT
    
    commit 8c0ae6574ccfd3d619876a65829aad74c9d22ba5 upstream.
    
    Make sure we're using the new macro, so our
    resume signaling will always pass certification.
    
    Signed-off-by: Felipe Balbi <balbi@ti.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3a8c01bc40fd66c07e8e943dd36dc9bc2090d6aa
Author: Felipe Balbi <balbi@ti.com>
Date:   Fri Feb 13 14:58:53 2015 -0600

    usb: host: r8a66597: use new USB_RESUME_TIMEOUT
    
    commit 7a606ac29752a3e571b83f9b3fceb1eaa1d37781 upstream.
    
    While this driver was already using a 50ms resume
    timeout, let's make sure everybody uses the same
    macro so it's easy to fix later should anything
    go wrong.
    
    It also gives a more "stable" expectation to Linux
    users.
    
    Signed-off-by: Felipe Balbi <balbi@ti.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7a2d2855fc7ba8eb962ff596f188b894f2b57eb1
Author: Felipe Balbi <balbi@ti.com>
Date:   Fri Feb 13 14:34:25 2015 -0600

    usb: define a generic USB_RESUME_TIMEOUT macro
    
    commit 62f0342de1f012f3e90607d39e20fce811391169 upstream.
    
    Every USB Host controller should use this new
    macro to define for how long resume signalling
    should be driven on the bus.
    
    Currently, almost every single USB controller
    is using a 20ms timeout for resume signalling.
    
    That's problematic for two reasons:
    
    a) sometimes that 20ms timer expires a little
    before 20ms, which makes us fail certification
    
    b) some (many) devices actually need more than
    20ms resume signalling.
    
    Sure, in case of (b) we can state that the device
    is against the USB spec, but the fact is that
    we have no control over which device the certification
    lab will use. We also have no control over which host
    they will use. Most likely they'll be using a Windows
    PC which, again, we have no control over how that
    USB stack is written and how long resume signalling
    they are using.
    
    At the end of the day, we must make sure Linux passes
    electrical compliance when working as Host or as Device
    and currently we don't pass compliance as host because
    we're driving resume signallig for exactly 20ms and
    that confuses certification test setup resulting in
    Certification failure.
    
    Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Acked-by: Peter Chen <peter.chen@freescale.com>
    Signed-off-by: Felipe Balbi <balbi@ti.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 99cecd301837acb25276c629483eb11205176414
Author: Axel Lin <axel.lin@ingics.com>
Date:   Thu Mar 12 09:15:28 2015 +0800

    usb: phy: Find the right match in devm_usb_phy_match
    
    commit 869aee0f31429fa9d94d5aef539602b73ae0cf4b upstream.
    
    The res parameter passed to devm_usb_phy_match() is the location where the
    pointer to the usb_phy is stored, hence it needs to be dereferenced before
    comparing to the match data in order to find the correct match.
    
    Fixes: 410219dcd2ba ("usb: otg: utils: devres: Add API's to associate a device with the phy")
    Signed-off-by: Axel Lin <axel.lin@ingics.com>
    Signed-off-by: Felipe Balbi <balbi@ti.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c82d2edfe720101550a377afceb903a52ac44e19
Author: Charles Keepax <ckeepax@opensource.wolfsonmicro.com>
Date:   Fri Mar 27 01:58:08 2015 +0900

    ARM: S3C64XX: Use fixed IRQ bases to avoid conflicts on Cragganmore
    
    commit 4e330ae4ab2915444f1e6dca1358a910aa259362 upstream.
    
    There are two PMICs on Cragganmore, currently one dynamically assign
    its IRQ base and the other uses a fixed base. It is possible for the
    statically assigned PMIC to fail if its IRQ is taken by the dynamically
    assigned one. Fix this by statically assigning both the IRQ bases.
    
    Signed-off-by: Charles Keepax <ckeepax@opensource.wolfsonmicro.com>
    Signed-off-by: Kukjin Kim <kgene@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

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

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

commit 7aea358e5c37d8f17e3911f21bd555d5533be7ec
Author: Krzysztof Kozlowski <k.kozlowski@samsung.com>
Date:   Fri Feb 20 14:32:25 2015 +0100

    power_supply: lp8788-charger: Fix leaked power supply on probe fail
    
    commit a7117f81e8391e035c49b3440792f7e6cea28173 upstream.
    
    Driver forgot to unregister charger power supply if registering of
    battery supply failed in probe(). In such case the memory associated
    with power supply leaked.
    
    Signed-off-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
    Fixes: 98a276649358 ("power_supply: Add new lp8788 charger driver")
    Signed-off-by: Sebastian Reichel <sre@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit faf8db2e2247ac49104653eddfca2e1eeb7efeea
Author: Steven Rostedt <rostedt@goodmis.org>
Date:   Tue Mar 17 10:40:38 2015 -0400

    ring-buffer: Replace this_cpu_*() with __this_cpu_*()
    
    commit 80a9b64e2c156b6523e7a01f2ba6e5d86e722814 upstream.
    
    It has come to my attention that this_cpu_read/write are horrible on
    architectures other than x86. Worse yet, they actually disable
    preemption or interrupts! This caused some unexpected tracing results
    on ARM.
    
       101.356868: preempt_count_add <-ring_buffer_lock_reserve
       101.356870: preempt_count_sub <-ring_buffer_lock_reserve
    
    The ring_buffer_lock_reserve has recursion protection that requires
    accessing a per cpu variable. But since preempt_disable() is traced, it
    too got traced while accessing the variable that is suppose to prevent
    recursion like this.
    
    The generic version of this_cpu_read() and write() are:
    
     #define this_cpu_generic_read(pcp)					\
     ({	typeof(pcp) ret__;						\
    	preempt_disable();						\
    	ret__ = *this_cpu_ptr(&(pcp));					\
    	preempt_enable();						\
    	ret__;								\
     })
    
     #define this_cpu_generic_to_op(pcp, val, op)				\
     do {									\
    	unsigned long flags;						\
    	raw_local_irq_save(flags);					\
    	*__this_cpu_ptr(&(pcp)) op val;					\
    	raw_local_irq_restore(flags);					\
     } while (0)
    
    Which is unacceptable for locations that know they are within preempt
    disabled or interrupt disabled locations.
    
    Paul McKenney stated that __this_cpu_() versions produce much better code on
    other architectures than this_cpu_() does, if we know that the call is done in
    a preempt disabled location.
    
    I also changed the recursive_unlock() to use two local variables instead
    of accessing the per_cpu variable twice.
    
    Link: http://lkml.kernel.org/r/20150317114411.GE3589@linux.vnet.ibm.com
    Link: http://lkml.kernel.org/r/20150317104038.312e73d1@gandalf.local.home
    
    Acked-by: Christoph Lameter <cl@linux.com>
    Reported-by: Uwe Kleine-Koenig <u.kleine-koenig@pengutronix.de>
    Tested-by: Uwe Kleine-Koenig <u.kleine-koenig@pengutronix.de>
    Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 14a1fe5de9d7c391301b517e8effb5f098ada9c4
Author: Ian Abbott <abbotti@mev.co.uk>
Date:   Mon Mar 23 17:50:27 2015 +0000

    spi: spidev: fix possible arithmetic overflow for multi-transfer message
    
    commit f20fbaad7620af2df36a1f9d1c9ecf48ead5b747 upstream.
    
    `spidev_message()` sums the lengths of the individual SPI transfers to
    determine the overall SPI message length.  It restricts the total
    length, returning an error if too long, but it does not check for
    arithmetic overflow.  For example, if the SPI message consisted of two
    transfers and the first has a length of 10 and the second has a length
    of (__u32)(-1), the total length would be seen as 9, even though the
    second transfer is actually very long.  If the second transfer specifies
    a null `rx_buf` and a non-null `tx_buf`, the `copy_from_user()` could
    overrun the spidev's pre-allocated tx buffer before it reaches an
    invalid user memory address.  Fix it by checking that neither the total
    nor the individual transfer lengths exceed the maximum allowed value.
    
    Thanks to Dan Carpenter for reporting the potential integer overflow.
    
    Signed-off-by: Ian Abbott <abbotti@mev.co.uk>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

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

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

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

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

commit cad1af8cfbafe09d84ebd87977540fbd896f7225
Author: Radim Krčmář <rkrcmar@redhat.com>
Date:   Wed Apr 8 14:16:48 2015 +0200

    KVM: use slowpath for cross page cached accesses
    
    commit ca3f0874723fad81d0c701b63ae3a17a408d5f25 upstream.
    
    kvm_write_guest_cached() does not mark all written pages as dirty and
    code comments in kvm_gfn_to_hva_cache_init() talk about NULL memslot
    with cross page accesses.  Fix all the easy way.
    
    The check is '<= 1' to have the same result for 'len = 0' cache anywhere
    in the page.  (nr_pages_needed is 0 on page boundary.)
    
    Fixes: 8f964525a121 ("KVM: Allow cross page reads and writes from cached translations.")
    Signed-off-by: Radim Krčmář <rkrcmar@redhat.com>
    Message-Id: <20150408121648.GA3519@potion.brq.redhat.com>
    Reviewed-by: Wanpeng Li <wanpeng.li@linux.intel.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

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

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

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

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

commit 3518a2e4bbe8c336d3f59138d1f7bdd628a841b3
Author: Felipe Balbi <balbi@ti.com>
Date:   Tue Sep 30 16:08:03 2014 -0500

    usb: gadget: composite: enable BESL support
    
    commit a6615937bcd9234e6d6bb817c3701fce44d0a84d upstream.
    
    According to USB 2.0 ECN Errata for Link Power
    Management (USB2-LPM-Errata-final.pdf), BESL
    must be enabled if LPM is enabled.
    
    This helps with USB30CV TD 9.21 LPM L1
    Suspend Resume Test.
    
    Signed-off-by: Felipe Balbi <balbi@ti.com>
    Signed-off-by: Du, Changbin <changbin.du@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

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

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

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

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

commit bc9f0ea1c736358f2db263ee2afe5af5a9dfcf2a
Author: Eric Dumazet <edumazet@google.com>
Date:   Thu Apr 23 10:42:39 2015 -0700

    tcp: avoid looping in tcp_send_fin()
    
    [ Upstream commit 845704a535e9b3c76448f52af1b70e4422ea03fd ]
    
    Presence of an unbound loop in tcp_send_fin() had always been hard
    to explain when analyzing crash dumps involving gigantic dying processes
    with millions of sockets.
    
    Lets try a different strategy :
    
    In case of memory pressure, try to add the FIN flag to last packet
    in write queue, even if packet was already sent. TCP stack will
    be able to deliver this FIN after a timeout event. Note that this
    FIN being delivered by a retransmit, it also carries a Push flag
    given our current implementation.
    
    By checking sk_under_memory_pressure(), we anticipate that cooking
    many FIN packets might deplete tcp memory.
    
    In the case we could not allocate a packet, even with __GFP_WAIT
    allocation, then not sending a FIN seems quite reasonable if it allows
    to get rid of this socket, free memory, and not block the process from
    eventually doing other useful work.
    
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit aac9fda375bbe75e0b8c033874af25e0f7f5a3a4
Author: Eric Dumazet <edumazet@google.com>
Date:   Tue Apr 21 18:32:24 2015 -0700

    tcp: fix possible deadlock in tcp_send_fin()
    
    [ Upstream commit d83769a580f1132ac26439f50068a29b02be535e ]
    
    Using sk_stream_alloc_skb() in tcp_send_fin() is dangerous in
    case a huge process is killed by OOM, and tcp_mem[2] is hit.
    
    To be able to free memory we need to make progress, so this
    patch allows FIN packets to not care about tcp_mem[2], if
    skb allocation succeeded.
    
    In a follow-up patch, we might abort tcp_send_fin() infinite loop
    in case TIF_MEMDIE is set on this thread, as memory allocator
    did its best getting extra memory already.
    
    This patch reverts d22e15371811 ("tcp: fix tcp fin memory accounting")
    
    Fixes: d22e15371811 ("tcp: fix tcp fin memory accounting")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fb138c4699c94b16bf9400394142c6d86fe70226
Author: Sebastian Pöhn <sebastian.poehn@gmail.com>
Date:   Mon Apr 20 09:19:20 2015 +0200

    ip_forward: Drop frames with attached skb->sk
    
    [ Upstream commit 2ab957492d13bb819400ac29ae55911d50a82a13 ]
    
    Initial discussion was:
    [FYI] xfrm: Don't lookup sk_policy for timewait sockets
    
    Forwarded frames should not have a socket attached. Especially
    tw sockets will lead to panics later-on in the stack.
    
    This was observed with TPROXY assigning a tw socket and broken
    policy routing (misconfigured). As a result frame enters
    forwarding path instead of input. We cannot solve this in
    TPROXY as it cannot know that policy routing is broken.
    
    v2:
    Remove useless comment
    
    Signed-off-by: Sebastian Poehn <sebastian.poehn@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>