commit 906d77a3c6c0578ccb1834875ab53360777b7ff3
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Thu Oct 30 09:43:25 2014 -0700

    Linux 3.17.2

commit 29e743171fc95cf5af44d8c258c1219fca7ece36
Author: David S. Miller <davem@davemloft.net>
Date:   Fri Oct 24 09:59:02 2014 -0700

    sparc64: Implement __get_user_pages_fast().
    
    [ Upstream commit 06090e8ed89ea2113a236befb41f71d51f100e60 ]
    
    It is not sufficient to only implement get_user_pages_fast(), you
    must also implement the atomic version __get_user_pages_fast()
    otherwise you end up using the weak symbol fallback implementation
    which simply returns zero.
    
    This is dangerous, because it causes the futex code to loop forever
    if transparent hugepages are supported (see get_futex_key()).
    
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3ecc3b82d3f771bbbfc9a29ae60b9fa472d54ed7
Author: David S. Miller <davem@davemloft.net>
Date:   Thu Oct 23 12:58:13 2014 -0700

    sparc64: Fix register corruption in top-most kernel stack frame during boot.
    
    [ Upstream commit ef3e035c3a9b81da8a778bc333d10637acf6c199 ]
    
    Meelis Roos reported that kernels built with gcc-4.9 do not boot, we
    eventually narrowed this down to only impacting machines using
    UltraSPARC-III and derivitive cpus.
    
    The crash happens right when the first user process is spawned:
    
    [   54.451346] Kernel panic - not syncing: Attempted to kill init! exitcode=0x00000004
    [   54.451346]
    [   54.571516] CPU: 1 PID: 1 Comm: init Not tainted 3.16.0-rc2-00211-gd7933ab #96
    [   54.666431] Call Trace:
    [   54.698453]  [0000000000762f8c] panic+0xb0/0x224
    [   54.759071]  [000000000045cf68] do_exit+0x948/0x960
    [   54.823123]  [000000000042cbc0] fault_in_user_windows+0xe0/0x100
    [   54.902036]  [0000000000404ad0] __handle_user_windows+0x0/0x10
    [   54.978662] Press Stop-A (L1-A) to return to the boot prom
    [   55.050713] ---[ end Kernel panic - not syncing: Attempted to kill init! exitcode=0x00000004
    
    Further investigation showed that compiling only per_cpu_patch() with
    an older compiler fixes the boot.
    
    Detailed analysis showed that the function is not being miscompiled by
    gcc-4.9, but it is using a different register allocation ordering.
    
    With the gcc-4.9 compiled function, something during the code patching
    causes some of the %i* input registers to get corrupted.  Perhaps
    we have a TLB miss path into the firmware that is deep enough to
    cause a register window spill and subsequent restore when we get
    back from the TLB miss trap.
    
    Let's plug this up by doing two things:
    
    1) Stop using the firmware stack for client interface calls into
       the firmware.  Just use the kernel's stack.
    
    2) As soon as we can, call into a new function "start_early_boot()"
       to put a one-register-window buffer between the firmware's
       deepest stack frame and the top-most initial kernel one.
    
    Reported-by: Meelis Roos <mroos@linux.ee>
    Tested-by: Meelis Roos <mroos@linux.ee>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5cf02ef6d07965bb3a5da1298fa72259e3c2ea6a
Author: Dave Kleikamp <dave.kleikamp@oracle.com>
Date:   Tue Oct 7 08:12:37 2014 -0500

    sparc64: Increase size of boot string to 1024 bytes
    
    [ Upstream commit 1cef94c36bd4d79b5ae3a3df99ee0d76d6a4a6dc ]
    
    This is the longest boot string that silo supports.
    
    Signed-off-by: Dave Kleikamp <dave.kleikamp@oracle.com>
    Cc: Bob Picco <bob.picco@oracle.com>
    Cc: David S. Miller <davem@davemloft.net>
    Cc: sparclinux@vger.kernel.org
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5c51a8b0cd0764d02fde570f274973ec182bc301
Author: David S. Miller <davem@davemloft.net>
Date:   Sat Sep 27 21:30:57 2014 -0700

    sparc64: Kill unnecessary tables and increase MAX_BANKS.
    
    [ Upstream commit d195b71bad4347d2df51072a537f922546a904f1 ]
    
    swapper_low_pmd_dir and swapper_pud_dir are actually completely
    useless and unnecessary.
    
    We just need swapper_pg_dir[].  Naturally the other page table chunks
    will be allocated on an as-needed basis.  Since the kernel actually
    accesses these tables in the PAGE_OFFSET view, there is not even a TLB
    locality advantage of placing them in the kernel image.
    
    Use the hard coded vmlinux.ld.S slot for swapper_pg_dir which is
    naturally page aligned.
    
    Increase MAX_BANKS to 1024 in order to handle heavily fragmented
    virtual guests.
    
    Even with this MAX_BANKS increase, the kernel is 20K+ smaller.
    
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Acked-by: Bob Picco <bob.picco@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 82f230ed1fa89d515dc023fd277ca24e00b83f86
Author: bob picco <bpicco@meloft.net>
Date:   Thu Sep 25 12:25:03 2014 -0700

    sparc64: sparse irq
    
    [ Upstream commit ee6a9333fa58e11577c1b531b8e0f5ffc0fd6f50 ]
    
    This patch attempts to do a few things. The highlights are: 1) enable
    SPARSE_IRQ unconditionally, 2) kills off !SPARSE_IRQ code 3) allocates
    ivector_table at boot time and 4) default to cookie only VIRQ mechanism
    for supported firmware. The first firmware with cookie only support for
    me appears on T5. You can optionally force the HV firmware to not cookie
    only mode which is the sysino support.
    
    The sysino is a deprecated HV mechanism according to the most recent
    SPARC Virtual Machine Specification. HV_GRP_INTR is what controls the
    cookie/sysino firmware versioning.
    
    The history of this interface is:
    
    1) Major version 1.0 only supported sysino based interrupt interfaces.
    
    2) Major version 2.0 added cookie based VIRQs, however due to the fact
       that OSs were using the VIRQs without negoatiating major version
       2.0 (Linux and Solaris are both guilty), the VIRQs calls were
       allowed even with major version 1.0
    
       To complicate things even further, the VIRQ interfaces were only
       actually hooked up in the hypervisor for LDC interrupt sources.
       VIRQ calls on other device types would result in HV_EINVAL errors.
    
       So effectively, major version 2.0 is unusable.
    
    3) Major version 3.0 was created to signal use of VIRQs and the fact
       that the hypervisor has these calls hooked up for all interrupt
       sources, not just those for LDC devices.
    
    A new boot option is provided should cookie only HV support have issues.
    hvirq - this is the version for HV_GRP_INTR. This is related to HV API
    versioning.  The code attempts major=3 first by default. The option can
    be used to override this default.
    
    I've tested with SPARSE_IRQ on T5-8, M7-4 and T4-X and Jalap?no.
    
    Signed-off-by: Bob Picco <bob.picco@oracle.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0c64120b21410033191cd82b44a7c3b90b6796c4
Author: David S. Miller <davem@davemloft.net>
Date:   Sat Sep 27 11:05:21 2014 -0700

    sparc64: Adjust vmalloc region size based upon available virtual address bits.
    
    [ Upstream commit bb4e6e85daa52a9f6210fa06a5ec6269598a202b ]
    
    In order to accomodate embedded per-cpu allocation with large numbers
    of cpus and numa nodes, we have to use as much virtual address space
    as possible for the vmalloc region.  Otherwise we can get things like:
    
    PERCPU: max_distance=0x380001c10000 too large for vmalloc space 0xff00000000
    
    So, once we select a value for PAGE_OFFSET, derive the size of the
    vmalloc region based upon that.
    
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Acked-by: Bob Picco <bob.picco@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 004f665611c50b381ceea3b6f368b4d9327dcbca
Author: David S. Miller <davem@davemloft.net>
Date:   Wed Sep 24 21:49:29 2014 -0700

    sparc64: Increase MAX_PHYS_ADDRESS_BITS to 53.
    
    Make sure, at compile time, that the kernel can properly support
    whatever MAX_PHYS_ADDRESS_BITS is defined to.
    
    On M7 chips, use a max_phys_bits value of 49.
    
    Based upon a patch by Bob Picco.
    
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Acked-by: Bob Picco <bob.picco@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1bbd6776e3957b0a9f8006e2d38a71149f705ca6
Author: David S. Miller <davem@davemloft.net>
Date:   Wed Sep 24 21:20:14 2014 -0700

    sparc64: Use kernel page tables for vmemmap.
    
    [ Upstream commit c06240c7f5c39c83dfd7849c0770775562441b96 ]
    
    For sparse memory configurations, the vmemmap array behaves terribly
    and it takes up an inordinate amount of space in the BSS section of
    the kernel image unconditionally.
    
    Just build huge PMDs and look them up just like we do for TLB misses
    in the vmalloc area.
    
    Kernel BSS shrinks by about 2MB.
    
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Acked-by: Bob Picco <bob.picco@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 92566c44de4e7373ffa0c42b73bfefd921171531
Author: David S. Miller <davem@davemloft.net>
Date:   Wed Sep 24 20:56:11 2014 -0700

    sparc64: Fix physical memory management regressions with large max_phys_bits.
    
    [ Upstream commit 0dd5b7b09e13dae32869371e08e1048349fd040c ]
    
    If max_phys_bits needs to be > 43 (f.e. for T4 chips), things like
    DEBUG_PAGEALLOC stop working because the 3-level page tables only
    can cover up to 43 bits.
    
    Another problem is that when we increased MAX_PHYS_ADDRESS_BITS up to
    47, several statically allocated tables became enormous.
    
    Compounding this is that we will need to support up to 49 bits of
    physical addressing for M7 chips.
    
    The two tables in question are sparc64_valid_addr_bitmap and
    kpte_linear_bitmap.
    
    The first holds a bitmap, with 1 bit for each 4MB chunk of physical
    memory, indicating whether that chunk actually exists in the machine
    and is valid.
    
    The second table is a set of 2-bit values which tell how large of a
    mapping (4MB, 256MB, 2GB, 16GB, respectively) we can use at each 256MB
    chunk of ram in the system.
    
    These tables are huge and take up an enormous amount of the BSS
    section of the sparc64 kernel image.  Specifically, the
    sparc64_valid_addr_bitmap is 4MB, and the kpte_linear_bitmap is 128K.
    
    So let's solve the space wastage and the DEBUG_PAGEALLOC problem
    at the same time, by using the kernel page tables (as designed) to
    manage this information.
    
    We have to keep using large mappings when DEBUG_PAGEALLOC is disabled,
    and we do this by encoding huge PMDs and PUDs.
    
    On a T4-2 with 256GB of ram the kernel page table takes up 16K with
    DEBUG_PAGEALLOC disabled and 256MB with it enabled.  Furthermore, this
    memory is dynamically allocated at run time rather than coded
    statically into the kernel image.
    
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Acked-by: Bob Picco <bob.picco@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 73bf1d0c9e7f4845077836834e41e3adbc02661b
Author: David S. Miller <davem@davemloft.net>
Date:   Wed Sep 17 10:14:56 2014 -0700

    sparc64: Adjust KTSB assembler to support larger physical addresses.
    
    [ Upstream commit 8c82dc0e883821c098c8b0b130ffebabf9aab5df ]
    
    As currently coded the KTSB accesses in the kernel only support up to
    47 bits of physical addressing.
    
    Adjust the instruction and patching sequence in order to support
    arbitrary 64 bits addresses.
    
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Acked-by: Bob Picco <bob.picco@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 498db9cdd85904c7a991da2542efa5ddaeb04ae4
Author: David S. Miller <davem@davemloft.net>
Date:   Fri Sep 26 21:58:33 2014 -0700

    sparc64: Define VA hole at run time, rather than at compile time.
    
    [ Upstream commit 4397bed080598001e88f612deb8b080bb1cc2322 ]
    
    Now that we use 4-level page tables, we can provide up to 53-bits of
    virtual address space to the user.
    
    Adjust the VA hole based upon the capabilities of the cpu type probed.
    
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Acked-by: Bob Picco <bob.picco@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 665fae74eb0fce44b2293987a7ccf1be3334530a
Author: David S. Miller <davem@davemloft.net>
Date:   Fri Sep 26 21:19:46 2014 -0700

    sparc64: Switch to 4-level page tables.
    
    [ Upstream commit ac55c768143aa34cc3789c4820cbb0809a76fd9c ]
    
    This has become necessary with chips that support more than 43-bits
    of physical addressing.
    
    Based almost entirely upon a patch by Bob Picco.
    
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Acked-by: Bob Picco <bob.picco@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d9fac2ec79d99a83692de1b5c2a8de278206a3bc
Author: bob picco <bpicco@meloft.net>
Date:   Tue Sep 16 10:09:06 2014 -0400

    sparc64: T5 PMU
    
    The T5 (niagara5) has different PCR related HV fast trap values and a new
    HV API Group. This patch utilizes these and shares when possible with niagara4.
    
    We use the same sparc_pmu niagara4_pmu. Should there be new effort to
    obtain the MCU perf statistics then this would have to be changed.
    
    Cc: sparclinux@vger.kernel.org
    Signed-off-by: Bob Picco <bob.picco@oracle.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 29893e72a98d4cb4f118c6649bf1e5352e1860e0
Author: Allen Pais <allen.pais@oracle.com>
Date:   Mon Sep 8 11:48:55 2014 +0530

    sparc64: cpu hardware caps support for sparc M6 and M7
    
    Signed-off-by: Allen Pais <allen.pais@oracle.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 37f0a64f5a0b8c35b6d08bd318bc452e12936a27
Author: Allen Pais <allen.pais@oracle.com>
Date:   Mon Sep 8 11:48:54 2014 +0530

    sparc64: support M6 and M7 for building CPU distribution map
    
    Add M6 and M7 chip type in cpumap.c to correctly build CPU distribution map that spans all online CPUs.
    
    Signed-off-by: Allen Pais <allen.pais@oracle.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 319dffe735f5ebdb05cd644c9876314bdacde0ad
Author: Allen Pais <allen.pais@oracle.com>
Date:   Mon Sep 8 11:48:53 2014 +0530

    sparc64: correctly recognise M6 and M7 cpu type
    
    The following patch adds support for correctly
    recognising M6 and M7 cpu type.
    
    Signed-off-by: Allen Pais <allen.pais@oracle.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3d6dc58816e4934ee164d231eeb2bd3de19479cc
Author: David S. Miller <davem@davemloft.net>
Date:   Wed Sep 24 21:05:30 2014 -0700

    sparc64: Fix hibernation code refrence to PAGE_OFFSET.
    
    We changed PAGE_OFFSET to be a variable rather than a constant,
    but this reference here in the hibernate assembler got missed.
    
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 54bca039c02bbb943b556e1020f4830ccae9fc17
Author: David S. Miller <davem@davemloft.net>
Date:   Sat Oct 18 23:12:33 2014 -0400

    sparc64: Do not define thread fpregs save area as zero-length array.
    
    [ Upstream commit e2653143d7d79a49f1a961aeae1d82612838b12c ]
    
    This breaks the stack end corruption detection facility.
    
    What that facility does it write a magic value to "end_of_stack()"
    and checking to see if it gets overwritten.
    
    "end_of_stack()" is "task_thread_info(p) + 1", which for sparc64 is
    the beginning of the FPU register save area.
    
    So once the user uses the FPU, the magic value is overwritten and the
    debug checks trigger.
    
    Fix this by making the size explicit.
    
    Due to the size we use for the fpsaved[], gsr[], and xfsr[] arrays we
    are limited to 7 levels of FPU state saves.  So each FPU register set
    is 256 bytes, allocate 256 * 7 for the fpregs area.
    
    Reported-by: Meelis Roos <mroos@linux.ee>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9c47c0adf098c6986915d0f79619a5e61f6a4039
Author: David S. Miller <davem@davemloft.net>
Date:   Tue Oct 14 19:37:58 2014 -0700

    sparc64: Fix FPU register corruption with AES crypto offload.
    
    [ Upstream commit f4da3628dc7c32a59d1fb7116bb042e6f436d611 ]
    
    The AES loops in arch/sparc/crypto/aes_glue.c use a scheme where the
    key material is preloaded into the FPU registers, and then we loop
    over and over doing the crypt operation, reusing those pre-cooked key
    registers.
    
    There are intervening blkcipher*() calls between the crypt operation
    calls.  And those might perform memcpy() and thus also try to use the
    FPU.
    
    The sparc64 kernel FPU usage mechanism is designed to allow such
    recursive uses, but with a catch.
    
    There has to be a trap between the two FPU using threads of control.
    
    The mechanism works by, when the FPU is already in use by the kernel,
    allocating a slot for FPU saving at trap time.  Then if, within the
    trap handler, we try to use the FPU registers, the pre-trap FPU
    register state is saved into the slot.  Then at trap return time we
    notice this and restore the pre-trap FPU state.
    
    Over the long term there are various more involved ways we can make
    this work, but for a quick fix let's take advantage of the fact that
    the situation where this happens is very limited.
    
    All sparc64 chips that support the crypto instructiosn also are using
    the Niagara4 memcpy routine, and that routine only uses the FPU for
    large copies where we can't get the source aligned properly to a
    multiple of 8 bytes.
    
    We look to see if the FPU is already in use in this context, and if so
    we use the non-large copy path which only uses integer registers.
    
    Furthermore, we also limit this special logic to when we are doing
    kernel copy, rather than a user copy.
    
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a0a203b25f069cc0fc98baae9f7ad02a9ceb6c3d
Author: David S. Miller <davem@davemloft.net>
Date:   Fri Oct 10 15:49:16 2014 -0400

    sparc64: Fix lockdep warnings on reboot on Ultra-5
    
    [ Upstream commit bdcf81b658ebc4c2640c3c2c55c8b31c601b6996 ]
    
    Inconsistently, the raw_* IRQ routines do not interact with and update
    the irqflags tracing and lockdep state, whereas the raw_* spinlock
    interfaces do.
    
    This causes problems in p1275_cmd_direct() because we disable hardirqs
    by hand using raw_local_irq_restore() and then do a raw_spin_lock()
    which triggers a lockdep trace because the CPU's hw IRQ state doesn't
    match IRQ tracing's internal software copy of that state.
    
    The CPU's irqs are disabled, yet current->hardirqs_enabled is true.
    
    ====================
    reboot: Restarting system
    ------------[ cut here ]------------
    WARNING: CPU: 0 PID: 1 at kernel/locking/lockdep.c:3536 check_flags+0x7c/0x240()
    DEBUG_LOCKS_WARN_ON(current->hardirqs_enabled)
    Modules linked in: openpromfs
    CPU: 0 PID: 1 Comm: systemd-shutdow Tainted: G        W      3.17.0-dirty #145
    Call Trace:
     [000000000045919c] warn_slowpath_common+0x5c/0xa0
     [0000000000459210] warn_slowpath_fmt+0x30/0x40
     [000000000048f41c] check_flags+0x7c/0x240
     [0000000000493280] lock_acquire+0x20/0x1c0
     [0000000000832b70] _raw_spin_lock+0x30/0x60
     [000000000068f2fc] p1275_cmd_direct+0x1c/0x60
     [000000000068ed28] prom_reboot+0x28/0x40
     [000000000043610c] machine_restart+0x4c/0x80
     [000000000047d2d4] kernel_restart+0x54/0x80
     [000000000047d618] SyS_reboot+0x138/0x200
     [00000000004060b4] linux_sparc_syscall32+0x34/0x60
    ---[ end trace 5c439fe81c05a100 ]---
    possible reason: unannotated irqs-off.
    irq event stamp: 2010267
    hardirqs last  enabled at (2010267): [<000000000049a358>] vprintk_emit+0x4b8/0x580
    hardirqs last disabled at (2010266): [<0000000000499f08>] vprintk_emit+0x68/0x580
    softirqs last  enabled at (2010046): [<000000000045d278>] __do_softirq+0x378/0x4a0
    softirqs last disabled at (2010039): [<000000000042bf08>] do_softirq_own_stack+0x28/0x40
    Resetting ...
    ====================
    
    Use local_* variables of the hw IRQ interfaces so that IRQ tracing sees
    all of our changes.
    
    Reported-by: Meelis Roos <mroos@linux.ee>
    Tested-by: Meelis Roos <mroos@linux.ee>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7250fa07dc938b0de30213ce2857fd254138fb74
Author: David S. Miller <davem@davemloft.net>
Date:   Sat Oct 4 21:05:14 2014 -0700

    sparc64: Fix reversed start/end in flush_tlb_kernel_range()
    
    [ Upstream commit 473ad7f4fb005d1bb727e4ef27d370d28703a062 ]
    
    When we have to split up a flush request into multiple pieces
    (in order to avoid the firmware range) we don't specify the
    arguments in the right order for the second piece.
    
    Fix the order, or else we get hangs as the code tries to
    flush "a lot" of entries and we get lockups like this:
    
    [ 4422.981276] NMI watchdog: BUG: soft lockup - CPU#12 stuck for 23s! [expect:117032]
    [ 4422.996130] Modules linked in: ipv6 loop usb_storage igb ptp sg sr_mod ehci_pci ehci_hcd pps_core n2_rng rng_core
    [ 4423.016617] CPU: 12 PID: 117032 Comm: expect Not tainted 3.17.0-rc4+ #1608
    [ 4423.030331] task: fff8003cc730e220 ti: fff8003d99d54000 task.ti: fff8003d99d54000
    [ 4423.045282] TSTATE: 0000000011001602 TPC: 00000000004521e8 TNPC: 00000000004521ec Y: 00000000    Not tainted
    [ 4423.064905] TPC: <__flush_tlb_kernel_range+0x28/0x40>
    [ 4423.074964] g0: 000000000052fd10 g1: 00000001295a8000 g2: ffffff7176ffc000 g3: 0000000000002000
    [ 4423.092324] g4: fff8003cc730e220 g5: fff8003dfedcc000 g6: fff8003d99d54000 g7: 0000000000000006
    [ 4423.109687] o0: 0000000000000000 o1: 0000000000000000 o2: 0000000000000003 o3: 00000000f0000000
    [ 4423.127058] o4: 0000000000000080 o5: 00000001295a8000 sp: fff8003d99d56d01 ret_pc: 000000000052ff54
    [ 4423.145121] RPC: <__purge_vmap_area_lazy+0x314/0x3a0>
    [ 4423.155185] l0: 0000000000000000 l1: 0000000000000000 l2: 0000000000a38040 l3: 0000000000000000
    [ 4423.172559] l4: fff8003dae8965e0 l5: ffffffffffffffff l6: 0000000000000000 l7: 00000000f7e2b138
    [ 4423.189913] i0: fff8003d99d576a0 i1: fff8003d99d576a8 i2: fff8003d99d575e8 i3: 0000000000000000
    [ 4423.207284] i4: 0000000000008008 i5: fff8003d99d575c8 i6: fff8003d99d56df1 i7: 0000000000530c24
    [ 4423.224640] I7: <free_vmap_area_noflush+0x64/0x80>
    [ 4423.234193] Call Trace:
    [ 4423.239051]  [0000000000530c24] free_vmap_area_noflush+0x64/0x80
    [ 4423.251029]  [0000000000531a7c] remove_vm_area+0x5c/0x80
    [ 4423.261628]  [0000000000531b80] __vunmap+0x20/0x120
    [ 4423.271352]  [000000000071cf18] n_tty_close+0x18/0x40
    [ 4423.281423]  [00000000007222b0] tty_ldisc_close+0x30/0x60
    [ 4423.292183]  [00000000007225a4] tty_ldisc_reinit+0x24/0xa0
    [ 4423.303120]  [0000000000722ab4] tty_ldisc_hangup+0xd4/0x1e0
    [ 4423.314232]  [0000000000719aa0] __tty_hangup+0x280/0x3c0
    [ 4423.324835]  [0000000000724cb4] pty_close+0x134/0x1a0
    [ 4423.334905]  [000000000071aa24] tty_release+0x104/0x500
    [ 4423.345316]  [00000000005511d0] __fput+0x90/0x1e0
    [ 4423.354701]  [000000000047fa54] task_work_run+0x94/0xe0
    [ 4423.365126]  [0000000000404b44] __handle_signal+0xc/0x2c
    
    Fixes: 4ca9a23765da ("sparc64: Guard against flushing openfirmware mappings.")
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 081dbb9fa94429333886ece9032fdd62b048b126
Author: Andreas Larsson <andreas@gaisler.com>
Date:   Fri Aug 29 17:08:21 2014 +0200

    sparc: Let memset return the address argument
    
    [ Upstream commit 74cad25c076a2f5253312c2fe82d1a4daecc1323 ]
    
    This makes memset follow the standard (instead of returning 0 on success). This
    is needed when certain versions of gcc optimizes around memset calls and assume
    that the address argument is preserved in %o0.
    
    Signed-off-by: Andreas Larsson <andreas@gaisler.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 40b18eec95444be5806b8edad9fceebd4f808017
Author: Sowmini Varadhan <sowmini.varadhan@oracle.com>
Date:   Tue Sep 16 11:37:08 2014 -0400

    sparc64: Move request_irq() from ldc_bind() to ldc_alloc()
    
    [ Upstream commit c21c4ab0d6921f7160a43216fa6973b5924de561 ]
    
    The request_irq() needs to be done from ldc_alloc()
    to avoid the following (caught by lockdep)
    
     [00000000004a0738] __might_sleep+0xf8/0x120
     [000000000058bea4] kmem_cache_alloc_trace+0x184/0x2c0
     [00000000004faf80] request_threaded_irq+0x80/0x160
     [000000000044f71c] ldc_bind+0x7c/0x220
     [0000000000452454] vio_port_up+0x54/0xe0
     [00000000101f6778] probe_disk+0x38/0x220 [sunvdc]
     [00000000101f6b8c] vdc_port_probe+0x22c/0x300 [sunvdc]
     [0000000000451a88] vio_device_probe+0x48/0x60
     [000000000074c56c] really_probe+0x6c/0x300
     [000000000074c83c] driver_probe_device+0x3c/0xa0
     [000000000074c92c] __driver_attach+0x8c/0xa0
     [000000000074a6ec] bus_for_each_dev+0x6c/0xa0
     [000000000074c1dc] driver_attach+0x1c/0x40
     [000000000074b0fc] bus_add_driver+0xbc/0x280
    
    Signed-off-by: Sowmini Varadhan <sowmini.varadhan@oracle.com>
    Acked-by: Dwight Engen <dwight.engen@oracle.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6568283ac0278db76082a46e0ddc2eb89102db6f
Author: bob picco <bpicco@meloft.net>
Date:   Tue Sep 16 09:28:15 2014 -0400

    sparc64: find_node adjustment
    
    [ Upstream commit 3dee9df54836d5f844f3d58281d3f3e6331b467f ]
    
    We have seen an issue with guest boot into LDOM that causes early boot failures
    because of no matching rules for node identitity of the memory. I analyzed this
    on my T4 and concluded there might not be a solution. I saw the issue in
    mainline too when booting into the control/primary domain - with guests
    configured.  Note, this could be a firmware bug on some older machines.
    
    I'll provide a full explanation of the issues below. Should we not find a
    matching BEST latency group for a real address (RA) then we will assume node 0.
    On the T4-2 here with the information provided I can't see an alternative.
    
    Technically the LDOM shown below should match the MBLOCK to the
    favorable latency group. However other factors must be considered too. Were
    the memory controllers configured "fine" grained interleave or "coarse"
    grain interleaved -  T4. Also should a "group" MD node be considered a NUMA
    node?
    
    There has to be at least one Machine Description (MD) "group" and hence one
    NUMA node. The group can have one or more latency groups (lg) - more than one
    memory controller. The current code chooses the smallest latency as the most
    favorable per group. The latency and lg information is in MLGROUP below.
    MBLOCK is the base and size of the RAs for the machine as fetched from OBP
    /memory "available" property. My machine has one MBLOCK but more would be
    possible - with holes?
    
    For a T4-2 the following information has been gathered:
    with LDOM guest
    MEMBLOCK configuration:
     memory size = 0x27f870000
     memory.cnt  = 0x3
     memory[0x0]    [0x00000020400000-0x0000029fc67fff], 0x27f868000 bytes
     memory[0x1]    [0x0000029fd8a000-0x0000029fd8bfff], 0x2000 bytes
     memory[0x2]    [0x0000029fd92000-0x0000029fd97fff], 0x6000 bytes
     reserved.cnt  = 0x2
     reserved[0x0]  [0x00000020800000-0x000000216c15c0], 0xec15c1 bytes
     reserved[0x1]  [0x00000024800000-0x0000002c180c1e], 0x7980c1f bytes
    MBLOCK[0]: base[20000000] size[280000000] offset[0]
    (note: "base" and "size" reported in "MBLOCK" encompass the "memory[X]" values)
    (note: (RA + offset) & mask = val is the formula to detect a match for the
    memory controller. should there be no match for find_node node, a return
    value of -1 resulted for the node - BAD)
    
    There is one group. It has these forward links
    MLGROUP[1]: node[545] latency[1f7e8] match[200000000] mask[200000000]
    MLGROUP[2]: node[54d] latency[2de60] match[0] mask[200000000]
    NUMA NODE[0]: node[545] mask[200000000] val[200000000] (latency[1f7e8])
    (note: "val" is the best lg's (smallest latency) "match")
    
    no LDOM guest - bare metal
    MEMBLOCK configuration:
     memory size = 0xfdf2d0000
     memory.cnt  = 0x3
     memory[0x0]    [0x00000020400000-0x00000fff6adfff], 0xfdf2ae000 bytes
     memory[0x1]    [0x00000fff6d2000-0x00000fff6e7fff], 0x16000 bytes
     memory[0x2]    [0x00000fff766000-0x00000fff771fff], 0xc000 bytes
     reserved.cnt  = 0x2
     reserved[0x0]  [0x00000020800000-0x00000021a04580], 0x1204581 bytes
     reserved[0x1]  [0x00000024800000-0x0000002c7d29fc], 0x7fd29fd bytes
    MBLOCK[0]: base[20000000] size[fe0000000] offset[0]
    
    there are two groups
    group node[16d5]
    MLGROUP[0]: node[1765] latency[1f7e8] match[0] mask[200000000]
    MLGROUP[3]: node[177d] latency[2de60] match[200000000] mask[200000000]
    NUMA NODE[0]: node[1765] mask[200000000] val[0] (latency[1f7e8])
    group node[171d]
    MLGROUP[2]: node[1775] latency[2de60] match[0] mask[200000000]
    MLGROUP[1]: node[176d] latency[1f7e8] match[200000000] mask[200000000]
    NUMA NODE[1]: node[176d] mask[200000000] val[200000000] (latency[1f7e8])
    (note: for this two "group" bare metal machine, 1/2 memory is in group one's
    lg and 1/2 memory is in group two's lg).
    
    Cc: sparclinux@vger.kernel.org
    Signed-off-by: Bob Picco <bob.picco@oracle.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1e53e8b4e26a7f8007d8cd839772989de1f67dab
Author: David S. Miller <davem@davemloft.net>
Date:   Sat Oct 18 23:03:09 2014 -0400

    sparc64: Fix corrupted thread fault code.
    
    [ Upstream commit 84bd6d8b9c0f06b3f188efb479c77e20f05e9a8a ]
    
    Every path that ends up at do_sparc64_fault() must install a valid
    FAULT_CODE_* bitmask in the per-thread fault code byte.
    
    Two paths leading to the label winfix_trampoline (which expects the
    FAULT_CODE_* mask in register %g4) were not doing so:
    
    1) For pre-hypervisor TLB protection violation traps, if we took
       the 'winfix_trampoline' path we wouldn't have %g4 initialized
       with the FAULT_CODE_* value yet.  Resulting in using the
       TLB_TAG_ACCESS register address value instead.
    
    2) In the TSB miss path, when we notice that we are going to use a
       hugepage mapping, but we haven't allocated the hugepage TSB yet, we
       still have to take the window fixup case into consideration and
       in that particular path we leave %g4 not setup properly.
    
    Errors on this sort were largely invisible previously, but after
    commit 4ccb9272892c33ef1c19a783cfa87103b30c2784 ("sparc64: sun4v TLB
    error power off events") we now have a fault_code mask bit
    (FAULT_CODE_BAD_RA) that triggers due to this bug.
    
    FAULT_CODE_BAD_RA triggers because this bit is set in TLB_TAG_ACCESS
    (see #1 above) and thus we get seemingly random bus errors triggered
    for user processes.
    
    Fixes: 4ccb9272892c ("sparc64: sun4v TLB error power off events")
    Reported-by: Meelis Roos <mroos@linux.ee>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ebc43a92e6e4085b7d80653085f37f8b5bdec785
Author: bob picco <bpicco@meloft.net>
Date:   Tue Sep 16 09:26:47 2014 -0400

    sparc64: sun4v TLB error power off events
    
    [ Upstream commit 4ccb9272892c33ef1c19a783cfa87103b30c2784 ]
    
    We've witnessed a few TLB events causing the machine to power off because
    of prom_halt. In one case it was some nfs related area during rmmod. Another
    was an mmapper of /dev/mem. A more recent one is an ITLB issue with
    a bad pagesize which could be a hardware bug. Bugs happen but we should
    attempt to not power off the machine and/or hang it when possible.
    
    This is a DTLB error from an mmapper of /dev/mem:
    [root@sparcie ~]# SUN4V-DTLB: Error at TPC[fffff80100903e6c], tl 1
    SUN4V-DTLB: TPC<0xfffff80100903e6c>
    SUN4V-DTLB: O7[fffff801081979d0]
    SUN4V-DTLB: O7<0xfffff801081979d0>
    SUN4V-DTLB: vaddr[fffff80100000000] ctx[1250] pte[98000000000f0610] error[2]
    .
    
    This is recent mainline for ITLB:
    [ 3708.179864] SUN4V-ITLB: TPC<0xfffffc010071cefc>
    [ 3708.188866] SUN4V-ITLB: O7[fffffc010071cee8]
    [ 3708.197377] SUN4V-ITLB: O7<0xfffffc010071cee8>
    [ 3708.206539] SUN4V-ITLB: vaddr[e0003] ctx[1a3c] pte[2900000dcc800eeb] error[4]
    .
    
    Normally sun4v_itlb_error_report() and sun4v_dtlb_error_report() would call
    prom_halt() and drop us to OF command prompt "ok". This isn't the case for
    LDOMs and the machine powers off.
    
    For the HV reported error of HV_ENORADDR for HV HV_MMU_MAP_ADDR_TRAP we cause
    a SIGBUS error by qualifying it within do_sparc64_fault() for fault code mask
    of FAULT_CODE_BAD_RA. This is done when trap level (%tl) is less or equal
    one("1"). Otherwise, for %tl > 1,  we proceed eventually to die_if_kernel().
    
    The logic of this patch was partially inspired by David Miller's feedback.
    
    Power off of large sparc64 machines is painful. Plus die_if_kernel provides
    more context. A reset sequence isn't a brief period on large sparc64 but
    better than power-off/power-on sequence.
    
    Cc: sparclinux@vger.kernel.org
    Signed-off-by: Bob Picco <bob.picco@oracle.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4ba79445665ba50fcb65ec59152daf5dadbf4bed
Author: Daniel Hellstrom <daniel@gaisler.com>
Date:   Wed Sep 10 14:17:52 2014 +0200

    sparc32: dma_alloc_coherent must honour gfp flags
    
    [ Upstream commit d1105287aabe88dbb3af825140badaa05cf0442c ]
    
    dma_zalloc_coherent() calls dma_alloc_coherent(__GFP_ZERO)
    but the sparc32 implementations sbus_alloc_coherent() and
    pci32_alloc_coherent() doesn't take the gfp flags into
    account.
    
    Tested on the SPARC32/LEON GRETH Ethernet driver which fails
    due to dma_alloc_coherent(__GFP_ZERO) returns non zeroed
    pages.
    
    Signed-off-by: Daniel Hellstrom <daniel@gaisler.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8006fece344df5eb1d82593402a6cdcf5dce71b3
Author: Dmitry Kasatkin <d.kasatkin@samsung.com>
Date:   Fri Jun 27 18:15:44 2014 +0300

    ima: pass 'opened' flag to identify newly created files
    
    commit 3034a146820c26fe6da66a45f6340fe87fe0983a upstream.
    
    Empty files and missing xattrs do not guarantee that a file was
    just created.  This patch passes FILE_CREATED flag to IMA to
    reliably identify new files.
    
    Signed-off-by: Dmitry Kasatkin <d.kasatkin@samsung.com>
    Signed-off-by: Mimi Zohar <zohar@linux.vnet.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f072a54f6892b611e592fbd87d7871deb04a9db4
Author: Dmitry Kasatkin <d.kasatkin@samsung.com>
Date:   Fri Jun 27 18:04:27 2014 +0300

    ima: provide flag to identify new empty files
    
    commit b151d6b00bbb798c58f2f21305e7d43fa763f34f upstream.
    
    On ima_file_free(), newly created empty files are not labeled with
    an initial security.ima value, because the iversion did not change.
    Commit dff6efc "fs: fix iversion handling" introduced a change in
    iversion behavior.  To verify this change use the shell command:
    
      $ (exec >foo)
      $ getfattr -h -e hex -d -m security foo
    
    This patch defines the IMA_NEW_FILE flag.  The flag is initially
    set, when IMA detects that a new file is created, and subsequently
    checked on the ima_file_free() hook to set the initial security.ima
    value.
    
    Signed-off-by: Dmitry Kasatkin <d.kasatkin@samsung.com>
    Signed-off-by: Mimi Zohar <zohar@linux.vnet.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 90c62d0e9cc95caa56c4c78f310edac6789974c5
Author: Dmitry Kasatkin <d.kasatkin@samsung.com>
Date:   Mon Jun 23 20:32:56 2014 +0300

    ima: fix fallback to use new_sync_read()
    
    commit 27cd1fc3ae5374a4a86662c67033f15ef27b2461 upstream.
    
    3.16 commit aad4f8bb42af06371aa0e85bf0cd9d52c0494985
    'switch simple generic_file_aio_read() users to ->read_iter()'
    replaced ->aio_read with ->read_iter in most of the file systems
    and introduced new_sync_read() as a replacement for do_sync_read().
    
    Most of file systems set '->read' and ima_kernel_read is not affected.
    When ->read is not set, this patch adopts fallback call changes from the
    vfs_read.
    
    Signed-off-by: Dmitry Kasatkin <d.kasatkin@samsung.com>
    Signed-off-by: Mimi Zohar <zohar@linux.vnet.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 11b477dd03bc4a0194813813744ee6f0cdcb8f79
Author: Gavin Shan <gwshan@linux.vnet.ibm.com>
Date:   Tue Sep 30 12:38:59 2014 +1000

    powerpc/eeh: Clear frozen device state in time
    
    commit 22fca17924094113fe79c1db5135290e1a84ad4b upstream.
    
    The problem was reported by Carol: In the scenario of passing mlx4
    adapter to guest, EEH error could be recovered successfully. When
    returning the device back to host, the driver (mlx4_core.ko)
    couldn't be loaded successfully because of error number -5 (-EIO)
    returned from mlx4_get_ownership(), which hits offlined PCI device.
    The root cause is that we missed to put the affected devices into
    normal state on clearing PE isolated state right after PE reset.
    
    The patch fixes above issue by putting the affected devices to
    normal state when clearing PE isolated state in eeh_pe_state_clear().
    
    Reported-by: Carol L. Soto <clsoto@us.ibm.com>
    Signed-off-by: Gavin Shan <gwshan@linux.vnet.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ef409eff9c2021f233d7ac108ffb5257d69df8eb
Author: Alexey Kardashevskiy <aik@ozlabs.ru>
Date:   Thu Sep 25 16:39:18 2014 +1000

    powerpc/iommu/ddw: Fix endianness
    
    commit 9410e0185e65394c0c6d046033904b53b97a9423 upstream.
    
    rtas_call() accepts and returns values in CPU endianness.
    The ddw_query_response and ddw_create_response structs members are
    defined and treated as BE but as they are passed to rtas_call() as
    (u32 *) and they get byteswapped automatically, the data is CPU-endian.
    This fixes ddw_query_response and ddw_create_response definitions and use.
    
    of_read_number() is designed to work with device tree cells - it assumes
    the input is big-endian and returns data in CPU-endian. However due
    to the ddw_create_response struct fix, create.addr_hi/lo are already
    CPU-endian so do not byteswap them.
    
    ddw_avail is a pointer to the "ibm,ddw-applicable" property which contains
    3 cells which are big-endian as it is a device tree. rtas_call() accepts
    a RTAS token in CPU-endian. This makes use of of_property_read_u32_array
    to byte swap and avoid the need for a number of be32_to_cpu calls.
    
    Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
    [aik: folded Anton's patch with of_property_read_u32_array]
    Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
    Acked-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 233f7b53f0a9a1ebc360905371615784825313dd
Author: Li Zhong <zhong@linux.vnet.ibm.com>
Date:   Wed Aug 27 17:34:00 2014 +0800

    powerpc: Only set numa node information for present cpus at boottime
    
    commit bc3c4327c92b9ceb9a6356ec64d1b2ab2dc851f9 upstream.
    
    As Nish suggested, it makes more sense to init the numa node informatiion
    for present cpus at boottime, which could also avoid WARN_ON(1) in
    numa_setup_cpu().
    
    With this change, we also need to change the smp_prepare_cpus() to set up
    numa information only on present cpus.
    
    For those possible, but not present cpus, their numa information
    will be set up after they are started, as the original code did before commit
    2fabf084b6ad.
    
    Cc: Nishanth Aravamudan <nacc@linux.vnet.ibm.com>
    Cc: Nathan Fontenot <nfont@linux.vnet.ibm.com>
    Signed-off-by: Li Zhong <zhong@linux.vnet.ibm.com>
    Acked-by: Nishanth Aravamudan <nacc@linux.vnet.ibm.com>
    Tested-by: Cyril Bur <cyril.bur@au1.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d74662d337ec01877f970eac2df3d719019d4b03
Author: Li Zhong <zhong@linux.vnet.ibm.com>
Date:   Wed Aug 27 17:33:59 2014 +0800

    powerpc: Fix warning reported by verify_cpu_node_mapping()
    
    commit 70ad237515d99595ed03848bd8e549e50e83c4f2 upstream.
    
    With commit 2fabf084b6ad ("powerpc: reorder per-cpu NUMA information's
    initialization"), during boottime, cpu_numa_callback() is called
    earlier(before their online) for each cpu, and verify_cpu_node_mapping()
    uses cpu_to_node() to check whether siblings are in the same node.
    
    It skips the checking for siblings that are not online yet. So the only
    check done here is for the bootcpu, which is online at that time. But
    the per-cpu numa_node cpu_to_node() uses hasn't been set up yet (which
    will be set up in smp_prepare_cpus()).
    
    So I saw something like following reported:
    [    0.000000] CPU thread siblings 1/2/3 and 0 don't belong to the same
    node!
    
    As we don't actually do the checking during this early stage, so maybe
    we could directly call numa_setup_cpu() in do_init_bootmem().
    
    Cc: Nishanth Aravamudan <nacc@linux.vnet.ibm.com>
    Cc: Nathan Fontenot <nfont@linux.vnet.ibm.com>
    Signed-off-by: Li Zhong <zhong@linux.vnet.ibm.com>
    Acked-by: Nishanth Aravamudan <nacc@linux.vnet.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 839ba7d5d3093749569635cbe8a56bb6658b75ea
Author: Catalin Marinas <catalin.marinas@arm.com>
Date:   Fri Oct 17 17:38:49 2014 +0100

    futex: Ensure get_futex_key_refs() always implies a barrier
    
    commit 76835b0ebf8a7fe85beb03c75121419a7dec52f0 upstream.
    
    Commit b0c29f79ecea (futexes: Avoid taking the hb->lock if there's
    nothing to wake up) changes the futex code to avoid taking a lock when
    there are no waiters. This code has been subsequently fixed in commit
    11d4616bd07f (futex: revert back to the explicit waiter counting code).
    Both the original commit and the fix-up rely on get_futex_key_refs() to
    always imply a barrier.
    
    However, for private futexes, none of the cases in the switch statement
    of get_futex_key_refs() would be hit and the function completes without
    a memory barrier as required before checking the "waiters" in
    futex_wake() -> hb_waiters_pending(). The consequence is a race with a
    thread waiting on a futex on another CPU, allowing the waker thread to
    read "waiters == 0" while the waiter thread to have read "futex_val ==
    locked" (in kernel).
    
    Without this fix, the problem (user space deadlocks) can be seen with
    Android bionic's mutex implementation on an arm64 multi-cluster system.
    
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    Reported-by: Matteo Franchin <Matteo.Franchin@arm.com>
    Fixes: b0c29f79ecea (futexes: Avoid taking the hb->lock if there's nothing to wake up)
    Acked-by: Davidlohr Bueso <dave@stgolabs.net>
    Tested-by: Mike Galbraith <umgwanakikbuti@gmail.com>
    Cc: Darren Hart <dvhart@linux.intel.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Ingo Molnar <mingo@kernel.org>
    Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9edb0e6bb52f12ac2c7458070f280d35cf554396
Author: Konstantin Khlebnikov <k.khlebnikov@samsung.com>
Date:   Thu Oct 9 15:29:27 2014 -0700

    mm/balloon_compaction: redesign ballooned pages management
    
    commit d6d86c0a7f8ddc5b38cf089222cb1d9540762dc2 upstream.
    
    Sasha Levin reported KASAN splash inside isolate_migratepages_range().
    Problem is in the function __is_movable_balloon_page() which tests
    AS_BALLOON_MAP in page->mapping->flags.  This function has no protection
    against anonymous pages.  As result it tried to check address space flags
    inside struct anon_vma.
    
    Further investigation shows more problems in current implementation:
    
    * Special branch in __unmap_and_move() never works:
      balloon_page_movable() checks page flags and page_count.  In
      __unmap_and_move() page is locked, reference counter is elevated, thus
      balloon_page_movable() always fails.  As a result execution goes to the
      normal migration path.  virtballoon_migratepage() returns
      MIGRATEPAGE_BALLOON_SUCCESS instead of MIGRATEPAGE_SUCCESS,
      move_to_new_page() thinks this is an error code and assigns
      newpage->mapping to NULL.  Newly migrated page lose connectivity with
      balloon an all ability for further migration.
    
    * lru_lock erroneously required in isolate_migratepages_range() for
      isolation ballooned page.  This function releases lru_lock periodically,
      this makes migration mostly impossible for some pages.
    
    * balloon_page_dequeue have a tight race with balloon_page_isolate:
      balloon_page_isolate could be executed in parallel with dequeue between
      picking page from list and locking page_lock.  Race is rare because they
      use trylock_page() for locking.
    
    This patch fixes all of them.
    
    Instead of fake mapping with special flag this patch uses special state of
    page->_mapcount: PAGE_BALLOON_MAPCOUNT_VALUE = -256.  Buddy allocator uses
    PAGE_BUDDY_MAPCOUNT_VALUE = -128 for similar purpose.  Storing mark
    directly in struct page makes everything safer and easier.
    
    PagePrivate is used to mark pages present in page list (i.e.  not
    isolated, like PageLRU for normal pages).  It replaces special rules for
    reference counter and makes balloon migration similar to migration of
    normal pages.  This flag is protected by page_lock together with link to
    the balloon device.
    
    Signed-off-by: Konstantin Khlebnikov <k.khlebnikov@samsung.com>
    Reported-by: Sasha Levin <sasha.levin@oracle.com>
    Link: http://lkml.kernel.org/p/53E6CEAA.9020105@oracle.com
    Cc: Rafael Aquini <aquini@redhat.com>
    Cc: Andrey Ryabinin <ryabinin.a.a@gmail.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 db96c43598d7b77105292d1d6c40d73fdaba0be4
Author: Daniel Glöckner <daniel-gl@gmx.net>
Date:   Mon Oct 13 15:53:16 2014 -0700

    rtc-cmos: fix wakeup from S5 without CONFIG_PM_SLEEP
    
    commit a882b14fe84951e236cd074e93575adc8a4be32e upstream.
    
    Commit b5ada4600dfd ("drivers/rtc/rtc-cmos.c: fix compilation warning
    when !CONFIG_PM_SLEEP") broke wakeup from S5 by making cmos_poweroff a
    nop unless CONFIG_PM_SLEEP was defined.
    
    Fix this by restricting the #ifdef to cmos_resume and restoring the old
    dependency on CONFIG_PM for cmos_suspend and cmos_poweroff.
    
    Signed-off-by: Daniel Glöckner <daniel-gl@gmx.net>
    Cc: Mika Westerberg <mika.westerberg@linux.intel.com>
    Cc: Alessandro Zummo <a.zummo@towertech.it>
    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 204530a20b4951e573d9d3952dcd405cd090092c
Author: Sasha Levin <sasha.levin@oracle.com>
Date:   Mon Oct 13 15:51:05 2014 -0700

    kernel: add support for gcc 5
    
    commit 71458cfc782eafe4b27656e078d379a34e472adf upstream.
    
    We're missing include/linux/compiler-gcc5.h which is required now
    because gcc branched off to v5 in trunk.
    
    Just copy the relevant bits out of include/linux/compiler-gcc4.h,
    no new code is added as of now.
    
    This fixes a build error when using gcc 5.
    
    Signed-off-by: Sasha Levin <sasha.levin@oracle.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 c94249271aaff37aeb0324ac4cfd1fcb53d25a8d
Author: Weijie Yang <weijie.yang@samsung.com>
Date:   Mon Oct 13 15:51:03 2014 -0700

    mm/cma: fix cma bitmap aligned mask computing
    
    commit 68faed630fc151a7a1c4853df00fb3dcacf782b4 upstream.
    
    The current cma bitmap aligned mask computation is incorrect.  It could
    cause an unexpected alignment when using cma_alloc() if the wanted align
    order is larger than cma->order_per_bit.
    
    Take kvm for example (PAGE_SHIFT = 12), kvm_cma->order_per_bit is set to
    6.  When kvm_alloc_rma() tries to alloc kvm_rma_pages, it will use 15 as
    the expected align value.  After using the current implementation however,
    we get 0 as cma bitmap aligned mask other than 511.
    
    This patch fixes the cma bitmap aligned mask calculation.
    
    [akpm@linux-foundation.org: coding-style fixes]
    Signed-off-by: Weijie Yang <weijie.yang@samsung.com>
    Acked-by: Michal Nazarewicz <mina86@mina86.com>
    Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com>
    Cc: "Aneesh Kumar K.V" <aneesh.kumar@linux.vnet.ibm.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 74486de6fbc4941e8709f733e71a58cd25ce9e0c
Author: Yann Droneaud <ydroneaud@opteya.com>
Date:   Thu Oct 9 15:24:40 2014 -0700

    fanotify: enable close-on-exec on events' fd when requested in fanotify_init()
    
    commit 0b37e097a648aa71d4db1ad108001e95b69a2da4 upstream.
    
    According to commit 80af258867648 ("fanotify: groups can specify their
    f_flags for new fd"), file descriptors created as part of file access
    notification events inherit flags from the event_f_flags argument passed
    to syscall fanotify_init(2)[1].
    
    Unfortunately O_CLOEXEC is currently silently ignored.
    
    Indeed, event_f_flags are only given to dentry_open(), which only seems to
    care about O_ACCMODE and O_PATH in do_dentry_open(), O_DIRECT in
    open_check_o_direct() and O_LARGEFILE in generic_file_open().
    
    It's a pity, since, according to some lookup on various search engines and
    http://codesearch.debian.net/, there's already some userspace code which
    use O_CLOEXEC:
    
    - in systemd's readahead[2]:
    
        fanotify_fd = fanotify_init(FAN_CLOEXEC|FAN_NONBLOCK, O_RDONLY|O_LARGEFILE|O_CLOEXEC|O_NOATIME);
    
    - in clsync[3]:
    
        #define FANOTIFY_EVFLAGS (O_LARGEFILE|O_RDONLY|O_CLOEXEC)
    
        int fanotify_d = fanotify_init(FANOTIFY_FLAGS, FANOTIFY_EVFLAGS);
    
    - in examples [4] from "Filesystem monitoring in the Linux
      kernel" article[5] by Aleksander Morgado:
    
        if ((fanotify_fd = fanotify_init (FAN_CLOEXEC,
                                          O_RDONLY | O_CLOEXEC | O_LARGEFILE)) < 0)
    
    Additionally, since commit 48149e9d3a7e ("fanotify: check file flags
    passed in fanotify_init").  having O_CLOEXEC as part of fanotify_init()
    second argument is expressly allowed.
    
    So it seems expected to set close-on-exec flag on the file descriptors if
    userspace is allowed to request it with O_CLOEXEC.
    
    But Andrew Morton raised[6] the concern that enabling now close-on-exec
    might break existing applications which ask for O_CLOEXEC but expect the
    file descriptor to be inherited across exec().
    
    In the other hand, as reported by Mihai Dontu[7] close-on-exec on the file
    descriptor returned as part of file access notify can break applications
    due to deadlock.  So close-on-exec is needed for most applications.
    
    More, applications asking for close-on-exec are likely expecting it to be
    enabled, relying on O_CLOEXEC being effective.  If not, it might weaken
    their security, as noted by Jan Kara[8].
    
    So this patch replaces call to macro get_unused_fd() by a call to function
    get_unused_fd_flags() with event_f_flags value as argument.  This way
    O_CLOEXEC flag in the second argument of fanotify_init(2) syscall is
    interpreted and close-on-exec get enabled when requested.
    
    [1] http://man7.org/linux/man-pages/man2/fanotify_init.2.html
    [2] http://cgit.freedesktop.org/systemd/systemd/tree/src/readahead/readahead-collect.c?id=v208#n294
    [3] https://github.com/xaionaro/clsync/blob/v0.2.1/sync.c#L1631
        https://github.com/xaionaro/clsync/blob/v0.2.1/configuration.h#L38
    [4] http://www.lanedo.com/~aleksander/fanotify/fanotify-example.c
    [5] http://www.lanedo.com/2013/filesystem-monitoring-linux-kernel/
    [6] http://lkml.kernel.org/r/20141001153621.65e9258e65a6167bf2e4cb50@linux-foundation.org
    [7] http://lkml.kernel.org/r/20141002095046.3715eb69@mdontu-l
    [8] http://lkml.kernel.org/r/20141002104410.GB19748@quack.suse.cz
    
    Link: http://lkml.kernel.org/r/cover.1411562410.git.ydroneaud@opteya.com
    Signed-off-by: Yann Droneaud <ydroneaud@opteya.com>
    Reviewed-by: Jan Kara <jack@suse.cz>
    Reviewed by: Heinrich Schuchardt <xypron.glpk@gmx.de>
    Tested-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
    Cc: Mihai Don\u021bu <mihai.dontu@gmail.com>
    Cc: Pádraig Brady <P@draigBrady.com>
    Cc: Heinrich Schuchardt <xypron.glpk@gmx.de>
    Cc: Jan Kara <jack@suse.cz>
    Cc: Valdis Kletnieks <Valdis.Kletnieks@vt.edu>
    Cc: Michael Kerrisk-manpages <mtk.manpages@gmail.com>
    Cc: Lino Sanfilippo <LinoSanfilippo@gmx.de>
    Cc: Richard Guy Briggs <rgb@redhat.com>
    Cc: Eric Paris <eparis@redhat.com>
    Cc: Al Viro <viro@zeniv.linux.org.uk>
    Cc: Michael Kerrisk <mtk.manpages@gmail.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 ba572a5ae63d8b8c9e5511951eb0061f55372f7b
Author: Junxiao Bi <junxiao.bi@oracle.com>
Date:   Thu Oct 9 15:28:23 2014 -0700

    mm: clear __GFP_FS when PF_MEMALLOC_NOIO is set
    
    commit 934f3072c17cc8886f4c043b47eeeb1b12f8de33 upstream.
    
    commit 21caf2fc1931 ("mm: teach mm by current context info to not do I/O
    during memory allocation") introduces PF_MEMALLOC_NOIO flag to avoid doing
    I/O inside memory allocation, __GFP_IO is cleared when this flag is set,
    but __GFP_FS implies __GFP_IO, it should also be cleared.  Or it may still
    run into I/O, like in superblock shrinker.  And this will make the kernel
    run into the deadlock case described in that commit.
    
    See Dave Chinner's comment about io in superblock shrinker:
    
    Filesystem shrinkers do indeed perform IO from the superblock shrinker and
    have for years.  Even clean inodes can require IO before they can be freed
    - e.g.  on an orphan list, need truncation of post-eof blocks, need to
    wait for ordered operations to complete before it can be freed, etc.
    
    IOWs, Ext4, btrfs and XFS all can issue and/or block on arbitrary amounts
    of IO in the superblock shrinker context.  XFS, in particular, has been
    doing transactions and IO from the VFS inode cache shrinker since it was
    first introduced....
    
    Fix this by clearing __GFP_FS in memalloc_noio_flags(), this function has
    masked all the gfp_mask that will be passed into fs for the processes
    setting PF_MEMALLOC_NOIO in the direct reclaim path.
    
    v1 thread at: https://lkml.org/lkml/2014/9/3/32
    
    Signed-off-by: Junxiao Bi <junxiao.bi@oracle.com>
    Cc: Dave Chinner <david@fromorbit.com>
    Cc: joyce.xue <xuejiufei@huawei.com>
    Cc: Ming Lei <ming.lei@canonical.com>
    Cc: Trond Myklebust <trond.myklebust@primarydata.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 25984b38a506bdcc3e2db5c0c9794868c778b5c3
Author: Jukka Rissanen <jukka.rissanen@linux.intel.com>
Date:   Mon Sep 8 12:11:45 2014 +0300

    Bluetooth: 6lowpan: Route packets that are not meant to peer via correct device
    
    commit 39e90c77637b3892a39f2908aea57539e961c50e upstream.
    
    Packets that are supposed to be delivered via the peer device need to
    be checked and sent to correct device. This requires that user has set
    the routes properly so that the 6lowpan module can then figure out
    the destination gateway and the correct Bluetooth device.
    
    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 db4a27fea4c349104c7e573df9225f2504111acd
Author: Jukka Rissanen <jukka.rissanen@linux.intel.com>
Date:   Mon Sep 8 12:11:44 2014 +0300

    Bluetooth: 6lowpan: Set the peer IPv6 address correctly
    
    commit b2799cec22812f5f1aaaa57133df51876f685d84 upstream.
    
    The peer IPv6 address contained wrong U/L bit in the EUI-64 part.
    
    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 617cef5ae6d08b576e893085e46dab14b154cbd9
Author: Jukka Rissanen <jukka.rissanen@linux.intel.com>
Date:   Mon Sep 8 12:11:43 2014 +0300

    Bluetooth: 6lowpan: Increase the connection timeout value
    
    commit 2ae50d8d3aaf7154f72b44331b71f15799cdc1bb upstream.
    
    Use the default connection timeout value defined in l2cap.h because
    the current timeout was too short and most of the time the connection
    attempts timed out.
    
    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 e8442e3c8e047c4c79984ff9d994f43348c11a28
Author: Johan Hedberg <johan.hedberg@intel.com>
Date:   Thu Sep 18 11:26:32 2014 +0300

    Bluetooth: Fix setting correct security level when initiating SMP
    
    commit 5eb596f55cacc2389554a8d7572d90d5e9d4269d upstream.
    
    We can only determine the final security level when both pairing request
    and response have been exchanged. When initiating pairing the starting
    target security level is set to MEDIUM unless explicitly specified to be
    HIGH, so that we can still perform pairing even if the remote doesn't
    have MITM capabilities. However, once we've received the pairing
    response we should re-consult the remote and local IO capabilities and
    upgrade the target security level if necessary.
    
    Without this patch the resulting Long Term Key will occasionally be
    reported to be unauthenticated when it in reality is an authenticated
    one.
    
    Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 12662c19b8d012e8f6efd674ae7b4f567d1b11f3
Author: Champion Chen <champion_chen@realsil.com.cn>
Date:   Sat Sep 6 14:06:08 2014 -0500

    Bluetooth: Fix issue with USB suspend in btusb driver
    
    commit 85560c4a828ec9c8573840c9b66487b6ae584768 upstream.
    
    Suspend could fail for some platforms because
    btusb_suspend==> btusb_stop_traffic ==> usb_kill_anchored_urbs.
    
    When btusb_bulk_complete returns before system suspend and resubmits
    an URB, the system cannot enter suspend state.
    
    Signed-off-by: Champion Chen <champion_chen@realsil.com.cn>
    Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b62619907c62722f531570c859b9f00ed75f505b
Author: Johan Hedberg <johan.hedberg@intel.com>
Date:   Fri Aug 15 21:06:51 2014 +0300

    Bluetooth: Fix incorrect LE CoC PDU length restriction based on HCI MTU
    
    commit 72c6fb915ff2d30ae14053edee4f0d30019bad76 upstream.
    
    The l2cap_create_le_flowctl_pdu() function that l2cap_segment_le_sdu()
    calls is perfectly capable of doing packet fragmentation if given bigger
    PDUs than the HCI buffers allow. Forcing the PDU length based on the HCI
    MTU (conn->mtu) would therefore needlessly strict operation on hardware
    with limited LE buffers (e.g. both Intel and Broadcom seem to have this
    set to just 27 bytes).
    
    This patch removes the restriction and makes it possible to send PDUs of
    the full length that the remote MPS value allows.
    
    Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 95d4ce059f45cd94d522be8b837cfe5ff657bb24
Author: Loic Poulain <loic.poulain@intel.com>
Date:   Fri Aug 8 19:07:16 2014 +0200

    Bluetooth: Fix HCI H5 corrupted ack value
    
    commit 4807b51895dce8aa650ebebc51fa4a795ed6b8b8 upstream.
    
    In this expression: seq = (seq - 1) % 8
    seq (u8) is implicitly converted to an int in the arithmetic operation.
    So if seq value is 0, operation is ((0 - 1) % 8) => (-1 % 8) => -1.
    The new seq value is 0xff which is an invalid ACK value, we expect 0x07.
    It leads to frequent dropped ACK and retransmission.
    Fix this by using '&' binary operator instead of '%'.
    
    Signed-off-by: Loic Poulain <loic.poulain@intel.com>
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3465ae92c736884c9fcea3ddecd8c69b84576c7d
Author: Felix Fietkau <nbd@openwrt.org>
Date:   Mon Sep 29 20:45:40 2014 +0200

    Revert "ath9k_hw: reduce ANI firstep range for older chips"
    
    commit 171cdab8c78bb169d9693d587e1d02d2dd5a0274 upstream.
    
    This reverts commit 09efc56345be4146ab9fc87a55c837ed5d6ea1ab
    
    I've received reports that this change is decreasing throughput in some
    rare conditions on an AR9280 based device
    
    Signed-off-by: Felix Fietkau <nbd@openwrt.org>
    Signed-off-by: John W. Linville <linville@tuxdriver.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e8beb3b22de84737fd823d6d04566dd45f9c8a98
Author: Stanislaw Gruszka <sgruszka@redhat.com>
Date:   Wed Sep 24 11:24:54 2014 +0200

    rt2800: correct BBP1_TX_POWER_CTRL mask
    
    commit 01f7feeaf4528bec83798316b3c811701bac5d3e upstream.
    
    Two bits control TX power on BBP_R1 register. Correct the mask,
    otherwise we clear additional bit on BBP_R1 register, what can have
    unknown, possible negative effect.
    
    Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
    Signed-off-by: John W. Linville <linville@tuxdriver.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9e4d53a9a824e357195c36576366df6564d28502
Author: Ricardo Ribalda Delgado <ricardo.ribalda@gmail.com>
Date:   Wed Aug 27 14:57:57 2014 +0200

    PCI: Generate uppercase hex for modalias interface class
    
    commit 89ec3dcf17fd3fa009ecf8faaba36828dd6bc416 upstream.
    
    Some implementations of modprobe fail to load the driver for a PCI device
    automatically because the "interface" part of the modalias from the kernel
    is lowercase, and the modalias from file2alias is uppercase.
    
    The "interface" is the low-order byte of the Class Code, defined in PCI
    r3.0, Appendix D.  Most interface types defined in the spec do not use
    alpha characters, so they won't be affected.  For example, 00h, 01h, 10h,
    20h, etc. are unaffected.
    
    Print the "interface" byte of the Class Code in uppercase hex, as we
    already do for the Vendor ID, Device ID, Class, etc.
    
    [bhelgaas: changelog]
    Signed-off-by: Ricardo Ribalda Delgado <ricardo.ribalda@gmail.com>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f5ff4624c7190665ab7506ee0d6f63487a482a1e
Author: Douglas Lehr <dllehr@us.ibm.com>
Date:   Thu Aug 21 09:26:52 2014 +1000

    PCI: Increase IBM ipr SAS Crocodile BARs to at least system page size
    
    commit 9fe373f9997b48fcd6222b95baf4a20c134b587a upstream.
    
    The Crocodile chip occasionally comes up with 4k and 8k BAR sizes.  Due to
    an erratum, setting the SR-IOV page size causes the physical function BARs
    to expand to the system page size.  Since ppc64 uses 64k pages, when Linux
    tries to assign the smaller resource sizes to the now 64k BARs the address
    will be truncated and the BARs will overlap.
    
    Force Linux to allocate the resource as a full page, which avoids the
    overlap.
    
    [bhelgaas: print expanded resource, too]
    Signed-off-by: Douglas Lehr <dllehr@us.ibm.com>
    Signed-off-by: Anton Blanchard <anton@samba.org>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Acked-by: Milton Miller <miltonm@us.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1687546e7ccd6d257ee691f01a7b60b6d28a4262
Author: Yinghai Lu <yinghai@kernel.org>
Date:   Fri Aug 22 18:15:07 2014 -0700

    PCI: Add missing MEM_64 mask in pci_assign_unassigned_bridge_resources()
    
    commit d61b0e87d2dfba3706dbbd6c7c6fd41c3d845685 upstream.
    
    In 5b28541552ef ("PCI: Restrict 64-bit prefetchable bridge windows to
    64-bit resources"), we added IORESOURCE_MEM_64 to the mask in
    pci_assign_unassigned_root_bus_resources(), but not to the mask in
    pci_assign_unassigned_bridge_resources().
    
    Add IORESOURCE_MEM_64 to the pci_assign_unassigned_bridge_resources() type
    mask.
    
    Fixes: 5b28541552ef ("PCI: Restrict 64-bit prefetchable bridge windows to 64-bit resources")
    Signed-off-by: Yinghai Lu <yinghai@kernel.org>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 09a18554d6a3328da7061ae2ed260835e2dc02dd
Author: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Date:   Wed Sep 17 17:58:27 2014 +0200

    PCI: mvebu: Fix uninitialized variable in mvebu_get_tgt_attr()
    
    commit 56fab6e189441d714a2bfc8a64f3df9c0749dff7 upstream.
    
    Geert Uytterhoeven reported a warning when building pci-mvebu:
    
      drivers/pci/host/pci-mvebu.c: In function 'mvebu_get_tgt_attr':
      drivers/pci/host/pci-mvebu.c:887:39: warning: 'rtype' may be used uninitialized in this function [-Wmaybe-uninitialized]
         if (slot == PCI_SLOT(devfn) && type == rtype) {
    					 ^
    
    And indeed, the code of mvebu_get_tgt_attr() may lead to the usage of rtype
    when being uninitialized, even though it would only happen if we had
    entries other than I/O space and 32 bits memory space.
    
    This commit fixes that by simply skipping the current DT range being
    considered, if it doesn't match the resource type we're looking for.
    
    Reported-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 11db06170febdc02fd5cafe88aaaf2a9c7c8404f
Author: Eric Sandeen <sandeen@sandeen.net>
Date:   Mon Oct 13 10:21:53 2014 +1100

    xfs: fix agno increment in xfs_inumbers() loop
    
    commit a8b1ee8bafc765ebf029d03c5479a69aebff9693 upstream.
    
    caused a regression in xfs_inumbers, which in turn broke
    xfsdump, causing incomplete dumps.
    
    The loop in xfs_inumbers() needs to fill the user-supplied
    buffers, and iterates via xfs_btree_increment, reading new
    ags as needed.
    
    But the first time through the loop, if xfs_btree_increment()
    succeeds, we continue, which triggers the ++agno at the bottom
    of the loop, and we skip to soon to the next ag - without
    the proper setup under next_ag to read the next ag.
    
    Fix this by removing the agno increment from the loop conditional,
    and only increment agno if we have actually hit the code under
    the next_ag: target.
    
    Signed-off-by: Eric Sandeen <sandeen@redhat.com>
    Reviewed-by: Dave Chinner <dchinner@redhat.com>
    Signed-off-by: Dave Chinner <david@fromorbit.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e802422206f5b7ecc49acb35952166e5b6d4de41
Author: Dave Chinner <dchinner@redhat.com>
Date:   Tue Sep 23 15:36:27 2014 +1000

    xfs: ensure WB_SYNC_ALL writeback handles partial pages correctly
    
    commit 0d085a529b427d97710e6a41f8a4f23e1757cd12 upstream.
    
    XFS has been having trouble with stray delayed allocation extents
    beyond EOF for a long time. Recent changes to the collapse range
    code has triggered erroneous EBUSY errors on page invalidtion for
    block size smaller than page size filesystems. These
    have been caused by dirty buffers beyond EOF on a partial page which
    do not get written to disk during a sync.
    
    The issue is that write-ahead in xfs_cluster_write() finds such a
    partial page and handles it by leaving the page dirty but pushing it
    into a writeback state. This used to work just fine, as the
    write_cache_pages() code would then find the dirty partial page in
    the next mapping tree lookup as the dirty tag is still set.
    
    Unfortunately, when we moved to a mark and sweep approach to
    writeback to fix other writeback sync issues, we broken this. THe
    act of marking the page as under writeback now clears the TOWRITE
    tag in the radix tree, even though the page is still dirty. This
    causes the TOWRITE tag to be cleared, and hence the next lookup on
    the mapping tree does not find the dirty partial page and so doesn't
    try to write it again.
    
    This same writeback bug was found recently in ext4 and fixed in
    commit 1c8349a ("ext4: fix data integrity sync in ordered mode")
    without communication to the wider filesystem community. We can use
    exactly the same fix here so the TOWRITE flag is not cleared on
    partial page writes.
    
    cc: stable@vger.kernel.org # dependent on 1c8349a17137b93f0a83f276c764a6df1b9a116e
    Root-cause-found-by: Brian Foster <bfoster@redhat.com>
    Signed-off-by: Dave Chinner <dchinner@redhat.com>
    Reviewed-by: Brian Foster <bfoster@redhat.com>
    Signed-off-by: Dave Chinner <david@fromorbit.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b6975072a1b9a2f8c527f8f9043dc86cfb70fc6a
Author: Alex Williamson <alex.williamson@redhat.com>
Date:   Mon Sep 29 17:18:39 2014 -0600

    vfio-pci: Fix remove path locking
    
    commit 93899a679fd6b2534b5c297d9316bae039ebcbe1 upstream.
    
    Locking both the remove() and release() path results in a deadlock
    that should have been obvious.  To fix this we can get and hold the
    vfio_device reference as we evaluate whether to do a bus/slot reset.
    This will automatically block any remove() calls, allowing us to
    remove the explict lock.  Fixes 61d792562b53.
    
    Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 801c7a20d255e300ab51a6fcb1d0e218d136b16f
Author: Jan Kara <jack@suse.cz>
Date:   Thu Oct 9 12:52:16 2014 +0200

    udf: Fix loading of special inodes
    
    commit 6174c2eb8ecef271159bdcde460ce8af54d8f72f upstream.
    
    Some UDF media have special inodes (like VAT or metadata partition
    inodes) whose link_count is 0. Thus commit 4071b9136223 (udf: Properly
    detect stale inodes) broke loading these inodes because udf_iget()
    started returning -ESTALE for them. Since we still need to properly
    detect stale inodes queried by NFS, create two variants of udf_iget() -
    one which is used for looking up special inodes (which ignores
    link_count == 0) and one which is used for other cases which return
    ESTALE when link_count == 0.
    
    Fixes: 4071b913622316970d0e1919f7d82b4403fec5f2
    Signed-off-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit aa9e8c556113ad1e91fa20012a8632dbc6633e6a
Author: Chao Yu <chao2.yu@samsung.com>
Date:   Thu Jul 24 17:25:42 2014 +0800

    ecryptfs: avoid to access NULL pointer when write metadata in xattr
    
    commit 35425ea2492175fd39f6116481fe98b2b3ddd4ca upstream.
    
    Christopher Head 2014-06-28 05:26:20 UTC described:
    "I tried to reproduce this on 3.12.21. Instead, when I do "echo hello > foo"
    in an ecryptfs mount with ecryptfs_xattr specified, I get a kernel crash:
    
    BUG: unable to handle kernel NULL pointer dereference at           (null)
    IP: [<ffffffff8110eb39>] fsstack_copy_attr_all+0x2/0x61
    PGD d7840067 PUD b2c3c067 PMD 0
    Oops: 0002 [#1] SMP
    Modules linked in: nvidia(PO)
    CPU: 3 PID: 3566 Comm: bash Tainted: P           O 3.12.21-gentoo-r1 #2
    Hardware name: ASUSTek Computer Inc. G60JX/G60JX, BIOS 206 03/15/2010
    task: ffff8801948944c0 ti: ffff8800bad70000 task.ti: ffff8800bad70000
    RIP: 0010:[<ffffffff8110eb39>]  [<ffffffff8110eb39>] fsstack_copy_attr_all+0x2/0x61
    RSP: 0018:ffff8800bad71c10  EFLAGS: 00010246
    RAX: 00000000000181a4 RBX: ffff880198648480 RCX: 0000000000000000
    RDX: 0000000000000004 RSI: ffff880172010450 RDI: 0000000000000000
    RBP: ffff880198490e40 R08: 0000000000000000 R09: 0000000000000000
    R10: ffff880172010450 R11: ffffea0002c51e80 R12: 0000000000002000
    R13: 000000000000001a R14: 0000000000000000 R15: ffff880198490e40
    FS:  00007ff224caa700(0000) GS:ffff88019fcc0000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 0000000000000000 CR3: 00000000bb07f000 CR4: 00000000000007e0
    Stack:
    ffffffff811826e8 ffff8800a39d8000 0000000000000000 000000000000001a
    ffff8800a01d0000 ffff8800a39d8000 ffffffff81185fd5 ffffffff81082c2c
    00000001a39d8000 53d0abbc98490e40 0000000000000037 ffff8800a39d8220
    Call Trace:
    [<ffffffff811826e8>] ? ecryptfs_setxattr+0x40/0x52
    [<ffffffff81185fd5>] ? ecryptfs_write_metadata+0x1b3/0x223
    [<ffffffff81082c2c>] ? should_resched+0x5/0x23
    [<ffffffff8118322b>] ? ecryptfs_initialize_file+0xaf/0xd4
    [<ffffffff81183344>] ? ecryptfs_create+0xf4/0x142
    [<ffffffff810f8c0d>] ? vfs_create+0x48/0x71
    [<ffffffff810f9c86>] ? do_last.isra.68+0x559/0x952
    [<ffffffff810f7ce7>] ? link_path_walk+0xbd/0x458
    [<ffffffff810fa2a3>] ? path_openat+0x224/0x472
    [<ffffffff810fa7bd>] ? do_filp_open+0x2b/0x6f
    [<ffffffff81103606>] ? __alloc_fd+0xd6/0xe7
    [<ffffffff810ee6ab>] ? do_sys_open+0x65/0xe9
    [<ffffffff8157d022>] ? system_call_fastpath+0x16/0x1b
    RIP  [<ffffffff8110eb39>] fsstack_copy_attr_all+0x2/0x61
    RSP <ffff8800bad71c10>
    CR2: 0000000000000000
    ---[ end trace df9dba5f1ddb8565 ]---"
    
    If we create a file when we mount with ecryptfs_xattr_metadata option, we will
    encounter a crash in this path:
    ->ecryptfs_create
      ->ecryptfs_initialize_file
        ->ecryptfs_write_metadata
          ->ecryptfs_write_metadata_to_xattr
            ->ecryptfs_setxattr
              ->fsstack_copy_attr_all
    It's because our dentry->d_inode used in fsstack_copy_attr_all is NULL, and it
    will be initialized when ecryptfs_initialize_file finish.
    
    So we should skip copying attr from lower inode when the value of ->d_inode is
    invalid.
    
    Signed-off-by: Chao Yu <chao2.yu@samsung.com>
    Signed-off-by: Tyler Hicks <tyhicks@canonical.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 35dabdcd78f559091ce8ba10cbc0a0992b7d0d09
Author: Fabio Estevam <fabio.estevam@freescale.com>
Date:   Mon Oct 20 11:08:01 2014 -0200

    ARM: dts: imx28-evk: Let i2c0 run at 100kHz
    
    commit d1e61eb443dc7512885dfe89ee2f2a1c29fcb1da upstream.
    
    Commit 78b81f4666fb ("ARM: dts: imx28-evk: Run I2C0 at 400kHz") caused issues
    when doing the following sequence in loop:
    
    - Boot the kernel
    - Perform audio playback
    - Reboot the system via 'reboot' command
    
    In many times the audio card cannot be probed, which causes playback to fail.
    
    After restoring to the original i2c0 frequency of 100kHz there is no such
    problem anymore.
    
    This reverts commit 78b81f4666fbb22a20b1e63e5baf197ad2e90e88.
    
    Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
    Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 78027e4fc777f9765303073a5728b4844a3faedf
Author: klightspeed@killerwolves.net <klightspeed@killerwolves.net>
Date:   Wed Sep 10 18:55:41 2014 +1000

    ARM: mvebu: Netgear RN102: Use Hardware BCH ECC
    
    commit ace8578182dc347b043c0825b9873f62fdaa5b77 upstream.
    
    The bootloader on the Netgear ReadyNAS RN102 uses Hardware BCH ECC
    (strength = 4), while the pxa3xx NAND driver by default uses
    Hamming ECC (strength = 1).
    
    This patch changes the ECC mode on these machines to match that
    of the bootloader and of the stock firmware. That way, it is
    now possible to update the kernel from userland (e.g. using
    standard tools from mtd-utils package); u-boot will happily
    load and boot it.
    
    Fixes: 92beaccd8b49 ("ARM: mvebu: Enable NAND controller in ReadyNAS 102 .dts file")
    Signed-off-by: Ben Peddell <klightspeed@killerwolves.net>
    Acked-by: Ezequiel Garcia <ezequiel.garcia@free-electrons.com>
    Tested-by: Arnaud Ebalard <arno@natisbad.org>
    Link: https://lkml.kernel.org/r/1410339341-3372-1-git-send-email-klightspeed@killerwolves.net
    Signed-off-by: Jason Cooper <jason@lakedaemon.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9243e741521a367159a584ee20971268e4b36cc9
Author: Arnaud Ebalard <arno@natisbad.org>
Date:   Sat Sep 6 22:49:38 2014 +0200

    ARM: mvebu: Netgear RN2120: Use Hardware BCH ECC
    
    commit 500abb6ccb9e3f8d638a7f422443a8549245ef90 upstream.
    
    The bootloader on the Netgear ReadyNAS RN2120 uses Hardware BCH
    ECC (strength = 4), while the pxa3xx NAND driver by default uses
    Hamming ECC (strength = 1).
    
    This patch changes the ECC mode on these machines to match that
    of the bootloader and of the stock firmware. That way, it is
    now possible to update the kernel from userland (e.g. using
    standard tools from mtd-utils package); u-boot will happily
    load and boot it.
    
    The issue was initially reported and fixed by Ben Pedell for
    RN102. The RN2120 shares the same Hynix H27U1G8F2BTR NAND
    flash and setup. This patch is based on Ben's fix for RN102.
    
    Fixes: ad51eddd95ad ("ARM: mvebu: Enable NAND controller in ReadyNAS 2120 .dts file")
    Signed-off-by: Arnaud Ebalard <arno@natisbad.org>
    Link: https://lkml.kernel.org/r/61f6a1b7ad0adc57a0e201b9680bc2e5f214a317.1410035142.git.arno@natisbad.org
    Signed-off-by: Jason Cooper <jason@lakedaemon.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit edc619335765b7a9c4c90b15a915617cd3e86cf6
Author: Arnaud Ebalard <arno@natisbad.org>
Date:   Sat Sep 6 22:49:25 2014 +0200

    ARM: mvebu: Netgear RN104: Use Hardware BCH ECC
    
    commit 225b94cdf719d0bc522a354bdafc18e5da5ff83b upstream.
    
    The bootloader on the Netgear ReadyNAS RN104 uses Hardware BCH
    ECC (strength = 4), while the pxa3xx NAND driver by default uses
    Hamming ECC (strength = 1).
    
    This patch changes the ECC mode on these machines to match that
    of the bootloader and of the stock firmware. That way, it is
    now possible to update the kernel from userland (e.g. using
    standard tools from mtd-utils package); u-boot will happily
    load and boot it.
    
    The issue was initially reported and fixed by Ben Pedell for
    RN102. The RN104 shares the same Hynix H27U1G8F2BTR NAND
    flash and setup. This patch is based on Ben's fix for RN102.
    
    Fixes: 0373a558bd79 ("ARM: mvebu: Enable NAND controller in ReadyNAS 104 .dts file")
    Signed-off-by: Arnaud Ebalard <arno@natisbad.org>
    Link: https://lkml.kernel.org/r/920c7e7169dc6aaaa3eb4bced2336d38e77b8864.1410035142.git.arno@natisbad.org
    Signed-off-by: Jason Cooper <jason@lakedaemon.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 20f1e615d09a4fa020b92f05f71147e026dcbf8e
Author: Andrew Lunn <andrew@lunn.ch>
Date:   Mon Sep 1 19:35:41 2014 +0200

    ARM: Kirkwood: Fix DT based DSA.
    
    commit 4f5e01e96d424b54f5f0e89ee1ba9ccca03a3941 upstream.
    
    During the conversion of boards to use DT to instantiate Distributed
    Switch Architecture, nobody volunteered to test. As to be expected,
    the conversion was flawed. Testers and access to hardware has now
    become available, and this patch hopefully fixes the problems.
    
    dsa,mii-bus must be a phandle to the top level mdio node, not the port
    specific subnode of the mdio device.
    
    dsa,ethernet must be a phandle to the port subnode within the ethernet
    DT node, not the ethernet node.
    
    Don't pinctrl hog the card detect gpio for mvsdio.
    
    Rename the .dts files to make it clearer which file is for the Z0
    stepping and which for the A0 or later stepping.
    
    Signed-off-by: Andrew Lunn <andrew@lunn.ch>
    Cc: seugene@marvell.com
    Tested-by: Eugene Sanivsky <seugene@marvell.com>
    Fixes: e2eaa339af44: ("ARM: Kirkwood: convert rd88f6281-setup.c to DT.")
    Fixes: e7c8f3808be8: ("ARM: kirkwood: Convert mv88f6281gtw_ge switch setup to DT")
    Link: https://lkml.kernel.org/r/1409592941-22244-1-git-send-email-andrew@lunn.ch
    Signed-off-by: Jason Cooper <jason@lakedaemon.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4f0d0964366cb4f0d052c019bb852892e51524c1
Author: Ludovic Desroches <ludovic.desroches@atmel.com>
Date:   Mon Sep 22 15:51:33 2014 +0200

    ARM: at91/PMC: don't forget to write PMC_PCDR register to disable clocks
    
    commit cfa1950e6c6b72251e80adc736af3c3d2907ab0e upstream.
    
    When introducing support for sama5d3, the write to PMC_PCDR register has
    been accidentally removed.
    
    Reported-by: Nathalie Cyrille <nathalie.cyrille@atmel.com>
    Signed-off-by: Ludovic Desroches <ludovic.desroches@atmel.com>
    Signed-off-by: Nicolas Ferre <nicolas.ferre@atmel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 162a454f287d8c25b2d4ad86979c4bc106d9866c
Author: Andreas Henriksson <andreas.henriksson@endian.se>
Date:   Tue Sep 23 17:12:52 2014 +0200

    ARM: at91: fix at91sam9263ek DT mmc pinmuxing settings
    
    commit b65e0fb3d046cc65d0a3c45d43de351fb363271b upstream.
    
    As discovered on a custom board similar to at91sam9263ek and basing
    its devicetree on that one apparently the pin muxing doesn't get
    set up properly. This was discovered since the custom boards u-boot
    does funky stuff with the pin muxing and leaved it set to SPI
    which made the MMC driver not work under Linux.
    The fix is simply to define the given configuration as the default.
    This probably worked by pure luck before, but it's better to
    make the muxing explicitly set.
    
    Signed-off-by: Andreas Henriksson <andreas.henriksson@endian.se>
    Acked-by: Boris Brezillon <boris.brezillon@free-electrons.com>
    Signed-off-by: Nicolas Ferre <nicolas.ferre@atmel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 224e67ebe4a8ab98740edb345cf527acdbf62518
Author: David Dueck <davidcdueck@googlemail.com>
Date:   Wed Sep 17 10:33:32 2014 +0200

    ARM: at91/dt: Fix typo regarding can0_clk
    
    commit 0a51d644c20f5c88fd3a659119d1903f74927082 upstream.
    
    Otherwise the clock for can0 will never get enabled.
    
    Signed-off-by: David Dueck <davidcdueck@googlemail.com>
    Signed-off-by: Anthony Harivel <anthony.harivel@emtrion.de>
    Acked-by: Boris Brezillon <boris.brezillon@free-electrons.com>
    Signed-off-by: Nicolas Ferre <nicolas.ferre@atmel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 22ac17ef36f0e920a3c4582f3358440161e2085c
Author: Andy Gross <agross@codeaurora.org>
Date:   Tue Sep 16 16:04:12 2014 -0500

    clk: qcom: Add IPQ8064 PLL required for USB
    
    commit dc1b3f657f25798b2dc9ed8928b80eb3183019a2 upstream.
    
    This patch adds the PLL0 that is required for the USB clocks to
    work properly.
    
    Signed-off-by: Andy Gross <agross@codeaurora.org>
    Fixes: 24d8fba44af3 "clk: qcom: Add support for IPQ8064's global clock controller (GCC)"
    Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 27d0241a2fe69a2f0bc5b720979b1cfe6deb453e
Author: David Henningsson <david.henningsson@canonical.com>
Date:   Fri Oct 24 10:00:38 2014 +0200

    ALSA: hda - Add missing terminating entry to SND_HDA_PIN_QUIRK macro
    
    commit fb54a645b2739fb196446ffbbbe3f3589d117b55 upstream.
    
    Without this terminating entry, the pin matching would continue
    across random memory until a zero or a non-matching entry was found.
    
    The result being that in some cases, the pin quirk would not be
    applied correctly.
    
    Signed-off-by: David Henningsson <david.henningsson@canonical.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ddcf6ee737e15936e63b8f827748bee0a138b99c
Author: Takashi Iwai <tiwai@suse.de>
Date:   Mon Oct 20 11:26:57 2014 +0200

    ALSA: hda - Fix inverted LED gpio setup for Lenovo Ideapad
    
    commit b1974f965a506c131b60cd3e483340884e831920 upstream.
    
    We implemented in a wrong way for mute LED on Lenovo Ideapad; the bit
    must be flipped.
    
    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=16373
    Fixes: 3e887f379d8a ('ALSA: hda - Add mute LED support to Lenovo Ideapad')
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6bd96259b22966363cecf5ae7f2ea39cfeee9f6d
Author: Anssi Hannula <anssi.hannula@iki.fi>
Date:   Sun Oct 19 19:25:19 2014 +0300

    ALSA: hda - hdmi: Fix missing ELD change event on plug/unplug
    
    commit 6acce400d9daf1353fbf497302670c90a3205e1d upstream.
    
    The ELD ALSA control change event is sent by hdmi_present_sense() when
    eld_changed is true.
    
    Currently, it is only true when the ELD buffer contents have been
    modified. However, the user-visible ELD controls also change to a
    zero-length value and back when eld_valid is unset/set, and no event is
    currently sent in such cases (such as when unplugging or replugging a
    sink).
    
    Fix the code to always set eld_changed if eld_valid value is changed,
    and therefore to always send the change event when the user-visible
    value changes.
    
    Signed-off-by: Anssi Hannula <anssi.hannula@iki.fi>
    Cc: David Henningsson <david.henningsson@canonical.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e2a707074bc1c2fe450b10cc21635efc3b18555b
Author: Vlad Catoi <vladcatoi@gmail.com>
Date:   Sat Oct 18 17:45:41 2014 -0500

    ALSA: usb-audio: Add support for Steinberg UR22 USB interface
    
    commit f0b127fbfdc8756eba7437ab668f3169280bd358 upstream.
    
    Adding support for Steinberg UR22 USB interface via quirks table patch
    
    See Ubuntu bug report:
    https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1317244
    Also see threads:
    http://linux-audio.4202.n7.nabble.com/Support-for-Steinberg-UR22-Yamaha-USB-chipset-0499-1509-tc82888.html#a82917
    http://www.steinberg.net/forums/viewtopic.php?t=62290
    
    Tested by at least 4 people judging by the threads.
    Did not test MIDI interface, but audio output and capture both are
    functional. Built 3.17 kernel with this driver on Ubuntu 14.04 & tested with mpg123
    Patch applied to 3.13 Ubuntu kernel works well enough for daily use.
    
    Signed-off-by: Vlad Catoi <vladcatoi@gmail.com>
    Acked-by: Clemens Ladisch <clemens@ladisch.de>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bcd444c28851b7301a2779c0530a676c2d1148d4
Author: Harsha Priya <harshapriya.n@intel.com>
Date:   Thu Oct 9 11:04:56 2014 +0000

    ALSA: ALC283 codec - Avoid pop noise on headphones during suspend/resume
    
    commit b450b17c156e264bc44a198046d3ebaaef5a041d upstream.
    
    This patch sets the headphones mode to default before suspending
    which helps avoid the pop noise on headphones
    
    Signed-off-by: Harsha Priya <harshapriya.n@intel.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a1c2070f773fbafe16af1b89cc05672588d3dc61
Author: Takashi Iwai <tiwai@suse.de>
Date:   Mon Oct 13 23:18:02 2014 +0200

    ALSA: emu10k1: Fix deadlock in synth voice lookup
    
    commit 95926035b187cc9fee6fb61385b7da9c28123f74 upstream.
    
    The emu10k1 voice allocator takes voice_lock spinlock.  When there is
    no empty stream available, it tries to release a voice used by synth,
    and calls get_synth_voice.  The callback function,
    snd_emu10k1_synth_get_voice(), however, also takes the voice_lock,
    thus it deadlocks.
    
    The fix is simply removing the voice_lock holds in
    snd_emu10k1_synth_get_voice(), as this is always called in the
    spinlock context.
    
    Reported-and-tested-by: Arthur Marsh <arthur.marsh@internode.on.net>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0608517bdd061083b20e7046758ce8a23c36103b
Author: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Date:   Fri Oct 10 23:32:49 2014 +0900

    ALSA: bebob: Fix failure to detect source of clock for Terratec Phase 88
    
    commit 3f4032861cfbff0b9134bf94c5c92e2146d1f068 upstream.
    
    This patch fixes a failure to open PCM device with -ENOSYS in
    Terratec Phase 88.
    
    Terratec Phase 88 has two Selector Function Blocks of AVC Audio subunit
    to switch source of clock. One is to switch internal/external for the
    source and another is to switch word/spdif for the external clock.
    
    The IDs for these Selector Function Blocks are 9 and 8. But in current
    implementation they're 0 and 0.
    
    Reported-by: András Murányi <muranyia@gmail.com>
    Tested-by: András Murányi <muranyia@gmail.com>
    Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ae1b5d01ad58519df51a9f04727ab26ecbb6d495
Author: Anatol Pomozov <anatol.pomozov@gmail.com>
Date:   Fri Oct 17 12:43:34 2014 -0700

    ALSA: pcm: use the same dma mmap codepath both for arm and arm64
    
    commit a011e213f3700233ed2a676f1ef0a74a052d7162 upstream.
    
    This avoids following kernel crash when try to playback on arm64
    
    [  107.497203] [<ffffffc00046b310>] snd_pcm_mmap_data_fault+0x90/0xd4
    [  107.503405] [<ffffffc0001541ac>] __do_fault+0xb0/0x498
    [  107.508565] [<ffffffc0001576a0>] handle_mm_fault+0x224/0x7b0
    [  107.514246] [<ffffffc000092640>] do_page_fault+0x11c/0x310
    [  107.519738] [<ffffffc000081100>] do_mem_abort+0x38/0x98
    
    Tested: backported to 3.14 and tried to playback on arm64 machine
    
    Signed-off-by: Anatol Pomozov <anatol.pomozov@gmail.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b44bc032213b0afbcf1d1bf856c11bd0c7f27c41
Author: Victor Kamensky <victor.kamensky@linaro.org>
Date:   Tue Oct 14 06:55:05 2014 +0100

    arm64: compat: fix compat types affecting struct compat_elf_prpsinfo
    
    commit 971a5b6fe634bb7b617d8c5f25b6a3ddbc600194 upstream.
    
    The compat_elf_prpsinfo structure does not match the arch/arm struct
    elf_pspsinfo definition. As result NT_PRPSINFO note in core file
    created by arm64 kernel for aarch32 (compat) process has wrong size.
    So gdb cannot display command that caused process crash.
    
    Fix is to change size of __compat_uid_t, __compat_gid_t so it would
    match size of similar fields in arch/arm case.
    
    Signed-off-by: Victor Kamensky <victor.kamensky@linaro.org>
    Acked-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d5985844f497b88ea890aad5203fb966bc5d0f63
Author: Catalin Marinas <catalin.marinas@arm.com>
Date:   Tue Oct 21 17:01:07 2014 +0100

    arm64: Fix compilation error on UP builds
    
    commit ceab3fe69408cb98f437dad3b4b4bb79434370ef upstream.
    
    In file included from ./arch/arm64/include/asm/irq_work.h:4:0,
            from include/linux/irq_work.h:46,
            from include/linux/perf_event.h:49,
            from include/linux/ftrace_event.h:9,
            from include/trace/syscall.h:6,
            from include/linux/syscalls.h:81,
            from init/main.c:18:
    ./arch/arm64/include/asm/smp.h:24:3:
            error: #error "<asm/smp.h> included in non-SMP build"
     # error "<asm/smp.h> included in non-SMP build"
    
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    Fixes: 3631073659d0 ("arm64: Tell irq work about self IPI support")
    Reported-by: Guenter Roeck <linux@roeck-us.net>
    Tested-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bc60bfded8622334f665fe7d6aed677735ff76c3
Author: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Date:   Thu Sep 18 20:08:53 2014 +0300

    spi: dw-mid: terminate ongoing transfers at exit
    
    commit 8e45ef682cb31fda62ed4eeede5d9745a0a1b1e2 upstream.
    
    Do full clean up at exit, means terminate all ongoing DMA transfers.
    
    Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 44f8ea82ca4cd1e0eb1673aa2fb62eb28a4d6340
Author: Oren Givon <oren.givon@intel.com>
Date:   Wed Sep 17 10:31:56 2014 +0300

    iwlwifi: Add missing PCI IDs for the 7260 series
    
    commit 4f08970f5284dce486f0e2290834aefb2a262189 upstream.
    
    Add 4 missing PCI IDs for the 7260 series.
    
    Signed-off-by: Oren Givon <oren.givon@intel.com>
    Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 02ee80194f44d678e1a560ba3fc267bf4f8f25c7
Author: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Date:   Sun Sep 21 12:45:34 2014 +0300

    iwlwifi: mvm: disable BT Co-running by default
    
    commit 9b60bb6d86496af1adc753795de2c12c4499868a upstream.
    
    The tables still contain dummy values.
    
    Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f63a0b15857a0beab5f724a0adee2e57b5f5b63d
Author: Trond Myklebust <trond.myklebust@primarydata.com>
Date:   Wed Oct 8 16:39:12 2014 -0400

    NFSv4.1/pnfs: replace broken pnfs_put_lseg_async
    
    commit 6543f803670530f6aa93790d9fa116d8395a537d upstream.
    
    You cannot call pnfs_put_lseg_async() more than once per lseg, so it
    is really an inappropriate way to deal with a refcount issue.
    
    Instead, replace it with a function that decrements the refcount, and
    puts the final 'free' operation (which is incompatible with locks) on
    the workqueue.
    
    Cc: Weston Andros Adamson <dros@primarydata.com>
    Fixes: e6cf82d1830f: pnfs: add pnfs_put_lseg_async
    Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8897bf1c7fa8b3524bb2cf343d4eb6d9b12204b5
Author: Trond Myklebust <trond.myklebust@primarydata.com>
Date:   Mon Oct 13 10:56:12 2014 -0400

    NFS: Fix a bogus warning in nfs_generic_pgio
    
    commit b8fb9c30f25e45dab5d2cd310ab6913b6861d00f upstream.
    
    It is OK for pageused == pagecount in the loop, as long as we don't add
    another entry to the *pages array. Move the test so that it only triggers
    in that case.
    
    Reported-by: Steve Dickson <SteveD@redhat.com>
    Fixes: bba5c1887a92 (nfs: disallow duplicate pages in pgio page vectors)
    Cc: Weston Andros Adamson <dros@primarydata.com>
    Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 56319a855a77bf8df4c87ad9c34cd2c2a538e663
Author: Trond Myklebust <trond.myklebust@primarydata.com>
Date:   Mon Oct 13 10:26:43 2014 -0400

    NFS: Fix an uninitialised pointer Oops in the writeback error path
    
    commit 3caa0c6ed754d91b15266abf222498edbef982bd upstream.
    
    SteveD reports the following Oops:
     RIP: 0010:[<ffffffffa053461d>]  [<ffffffffa053461d>] __put_nfs_open_context+0x1d/0x100 [nfs]
     RSP: 0018:ffff880fed687b90  EFLAGS: 00010286
     RAX: 0000000000000024 RBX: 0000000000000000 RCX: 0000000000000006
     RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000000
     RBP: ffff880fed687bc0 R08: 0000000000000092 R09: 000000000000047a
     R10: 0000000000000000 R11: ffff880fed6878d6 R12: ffff880fed687d20
     R13: ffff880fed687d20 R14: 0000000000000070 R15: ffffea000aa33ec0
     FS:  00007fce290f0740(0000) GS:ffff8807ffc60000(0000) knlGS:0000000000000000
     CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
     CR2: 0000000000000070 CR3: 00000007f2e79000 CR4: 00000000000007e0
     DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
     DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
     Stack:
      0000000000000000 ffff880036c5e510 ffff880fed687d20 ffff880fed687d20
      ffff880036c5e200 ffffea000aa33ec0 ffff880fed687bd0 ffffffffa0534710
      ffff880fed687be8 ffffffffa053d5f0 ffff880036c5e200 ffff880fed687c08
     Call Trace:
      [<ffffffffa0534710>] put_nfs_open_context+0x10/0x20 [nfs]
      [<ffffffffa053d5f0>] nfs_pgio_data_destroy+0x20/0x40 [nfs]
      [<ffffffffa053d672>] nfs_pgio_error+0x22/0x40 [nfs]
      [<ffffffffa053d8f4>] nfs_generic_pgio+0x74/0x2e0 [nfs]
      [<ffffffffa06b18c3>] pnfs_generic_pg_writepages+0x63/0x210 [nfsv4]
      [<ffffffffa053d579>] nfs_pageio_doio+0x19/0x50 [nfs]
      [<ffffffffa053eb84>] nfs_pageio_complete+0x24/0x30 [nfs]
      [<ffffffffa053cb25>] nfs_direct_write_schedule_iovec+0x115/0x1f0 [nfs]
      [<ffffffffa053675f>] ? nfs_get_lock_context+0x4f/0x120 [nfs]
      [<ffffffffa053d252>] nfs_file_direct_write+0x262/0x420 [nfs]
      [<ffffffffa0532d91>] nfs_file_write+0x131/0x1d0 [nfs]
      [<ffffffffa0532c60>] ? nfs_need_sync_write.isra.17+0x40/0x40 [nfs]
      [<ffffffff812127b8>] do_io_submit+0x3b8/0x840
      [<ffffffff81212c50>] SyS_io_submit+0x10/0x20
      [<ffffffff81610f29>] system_call_fastpath+0x16/0x1b
    
    This is due to the calls to nfs_pgio_error() in nfs_generic_pgio(), which
    happen before the nfs_pgio_header's open context is referenced in
    nfs_pgio_rpcsetup().
    
    Reported-by: Steve Dickson <SteveD@redhat.com>
    Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8a3072e208d9c48e9e0073b48e5a2eb56ea88d01
Author: J. Bruce Fields <bfields@redhat.com>
Date:   Tue Aug 12 11:41:40 2014 -0400

    nfsd4: reserve adequate space for LOCK op
    
    commit f7b43d0c992c3ec3e8d9285c3fb5e1e0eb0d031a upstream.
    
    As of  8c7424cff6 "nfsd4: don't try to encode conflicting owner if low
    on space", we permit the server to process a LOCK operation even if
    there might not be space to return the conflicting lockowner, because
    we've made returning the conflicting lockowner optional.
    
    However, the rpc server still wants to know the most we might possibly
    return, so we need to take into account the possible conflicting
    lockowner in the svc_reserve_space() call here.
    
    Symptoms were log messages like "RPC request reserved 88 but used 108".
    
    Fixes: 8c7424cff6 "nfsd4: don't try to encode conflicting owner if low on space"
    Reported-by: Kinglong Mee <kinglongmee@gmail.com>
    Signed-off-by: J. Bruce Fields <bfields@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9873d3330d5af98c1c7debc2310c7e0e62cc7da1
Author: Andy Adamson <andros@netapp.com>
Date:   Mon Sep 29 12:31:57 2014 -0400

    NFSv4.1: Fix an NFSv4.1 state renewal regression
    
    commit d1f456b0b9545f1606a54cd17c20775f159bd2ce upstream.
    
    Commit 2f60ea6b8ced ("NFSv4: The NFSv4.0 client must send RENEW calls if it holds a delegation") set the NFS4_RENEW_TIMEOUT flag in nfs4_renew_state, and does
    not put an nfs41_proc_async_sequence call, the NFSv4.1 lease renewal heartbeat
    call, on the wire to renew the NFSv4.1 state if the flag was not set.
    
    The NFS4_RENEW_TIMEOUT flag is set when "now" is after the last renewal
    (cl_last_renewal) plus the lease time divided by 3. This is arbitrary and
    sometimes does the following:
    
    In normal operation, the only way a future state renewal call is put on the
    wire is via a call to nfs4_schedule_state_renewal, which schedules a
    nfs4_renew_state workqueue task. nfs4_renew_state determines if the
    NFS4_RENEW_TIMEOUT should be set, and the calls nfs41_proc_async_sequence,
    which only gets sent if the NFS4_RENEW_TIMEOUT flag is set.
    Then the nfs41_proc_async_sequence rpc_release function schedules
    another state remewal via nfs4_schedule_state_renewal.
    
    Without this change we can get into a state where an application stops
    accessing the NFSv4.1 share, state renewal calls stop due to the
    NFS4_RENEW_TIMEOUT flag _not_ being set. The only way to recover
    from this situation is with a clientid re-establishment, once the application
    resumes and the server has timed out the lease and so returns
    NFS4ERR_BAD_SESSION on the subsequent SEQUENCE operation.
    
    An example application:
    open, lock, write a file.
    
    sleep for 6 * lease (could be less)
    
    ulock, close.
    
    In the above example with NFSv4.1 delegations enabled, without this change,
    there are no OP_SEQUENCE state renewal calls during the sleep, and the
    clientid is recovered due to lease expiration on the close.
    
    This issue does not occur with NFSv4.1 delegations disabled, nor with
    NFSv4.0, with or without delegations enabled.
    
    Signed-off-by: Andy Adamson <andros@netapp.com>
    Link: http://lkml.kernel.org/r/1411486536-23401-1-git-send-email-andros@netapp.com
    Fixes: 2f60ea6b8ced (NFSv4: The NFSv4.0 client must send RENEW calls...)
    Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c11415eedf92a0a4cc6342aa81ddc1f44a99f6f7
Author: Trond Myklebust <trond.myklebust@primarydata.com>
Date:   Sat Sep 27 17:41:51 2014 -0400

    NFSv4: fix open/lock state recovery error handling
    
    commit df817ba35736db2d62b07de6f050a4db53492ad8 upstream.
    
    The current open/lock state recovery unfortunately does not handle errors
    such as NFS4ERR_CONN_NOT_BOUND_TO_SESSION correctly. Instead of looping,
    just proceeds as if the state manager is finished recovering.
    This patch ensures that we loop back, handle higher priority errors
    and complete the open/lock state recovery.
    
    Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7810cb19494890aca6a9768fa28112b85b5ae61d
Author: Trond Myklebust <trond.myklebust@primarydata.com>
Date:   Sat Sep 27 17:02:26 2014 -0400

    NFSv4: Fix lock recovery when CREATE_SESSION/SETCLIENTID_CONFIRM fails
    
    commit a4339b7b686b4acc8b6de2b07d7bacbe3ae44b83 upstream.
    
    If a NFSv4.x server returns NFS4ERR_STALE_CLIENTID in response to a
    CREATE_SESSION or SETCLIENTID_CONFIRM in order to tell us that it rebooted
    a second time, then the client will currently take this to mean that it must
    declare all locks to be stale, and hence ineligible for reboot recovery.
    
    RFC3530 and RFC5661 both suggest that the client should instead rely on the
    server to respond to inelegible open share, lock and delegation reclaim
    requests with NFS4ERR_NO_GRACE in this situation.
    
    Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 40456158e3c0f2aacd846a8d24b08916dc358174
Author: Fabian Frederick <fabf@skynet.be>
Date:   Wed Sep 24 18:56:11 2014 +0200

    nfs: fix duplicate proc entries
    
    commit 2f3169fb18f4643ac9a6a097a6a6c71f0b2cef75 upstream.
    
    Commit 65b38851a174
    ("NFS: Fix /proc/fs/nfsfs/servers and /proc/fs/nfsfs/volumes")
    
    updated the following function:
    static int nfs_volume_list_open(struct inode *inode, struct file *file)
    
    it used &nfs_server_list_ops instead of &nfs_volume_list_ops
    which means cat /proc/fs/nfsfs/volumes = /proc/fs/nfsfs/servers
    
    Signed-off-by: Fabian Frederick <fabf@skynet.be>
    Fixes: 65b38851a174 (NFS: Fix /proc/fs/nfsfs/servers and...)
    Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3a2a7dcfd74f030169bcc2e2d3fe6249e721268b
Author: Frans Klaver <frans.klaver@xsens.com>
Date:   Thu Sep 25 11:19:51 2014 +0200

    tty: omap-serial: fix division by zero
    
    commit dc3187564e61260f49eceb21a4e7eb5e4428e90a upstream.
    
    If the chosen baud rate is large enough (e.g. 3.5 megabaud), the
    calculated n values in serial_omap_is_baud_mode16() may become 0. This
    causes a division by zero when calculating the difference between
    calculated and desired baud rates. To prevent this, cap the n13 and n16
    values on 1.
    
    Division by zero in kernel.
    [<c00132e0>] (unwind_backtrace) from [<c00112ec>] (show_stack+0x10/0x14)
    [<c00112ec>] (show_stack) from [<c01ed7bc>] (Ldiv0+0x8/0x10)
    [<c01ed7bc>] (Ldiv0) from [<c023805c>] (serial_omap_baud_is_mode16+0x4c/0x68)
    [<c023805c>] (serial_omap_baud_is_mode16) from [<c02396b4>] (serial_omap_set_termios+0x90/0x8d8)
    [<c02396b4>] (serial_omap_set_termios) from [<c0230a0c>] (uart_change_speed+0xa4/0xa8)
    [<c0230a0c>] (uart_change_speed) from [<c0231798>] (uart_set_termios+0xa0/0x1fc)
    [<c0231798>] (uart_set_termios) from [<c022bb44>] (tty_set_termios+0x248/0x2c0)
    [<c022bb44>] (tty_set_termios) from [<c022c17c>] (set_termios+0x248/0x29c)
    [<c022c17c>] (set_termios) from [<c022c3e4>] (tty_mode_ioctl+0x1c8/0x4e8)
    [<c022c3e4>] (tty_mode_ioctl) from [<c0227e70>] (tty_ioctl+0xa94/0xb18)
    [<c0227e70>] (tty_ioctl) from [<c00cf45c>] (do_vfs_ioctl+0x4a0/0x560)
    [<c00cf45c>] (do_vfs_ioctl) from [<c00cf568>] (SyS_ioctl+0x4c/0x74)
    [<c00cf568>] (SyS_ioctl) from [<c000e480>] (ret_fast_syscall+0x0/0x30)
    
    Signed-off-by: Frans Klaver <frans.klaver@xsens.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d6398ac2e6e8700cd9d420f5ce035e2e0385ec75
Author: Willy Tarreau <w@1wt.eu>
Date:   Sat Sep 27 12:31:37 2014 +0200

    lzo: check for length overrun in variable length encoding.
    
    commit 72cf90124e87d975d0b2114d930808c58b4c05e4 upstream.
    
    This fix ensures that we never meet an integer overflow while adding
    255 while parsing a variable length encoding. It works differently from
    commit 206a81c ("lzo: properly check for overruns") because instead of
    ensuring that we don't overrun the input, which is tricky to guarantee
    due to many assumptions in the code, it simply checks that the cumulated
    number of 255 read cannot overflow by bounding this number.
    
    The MAX_255_COUNT is the maximum number of times we can add 255 to a base
    count without overflowing an integer. The multiply will overflow when
    multiplying 255 by more than MAXINT/255. The sum will overflow earlier
    depending on the base count. Since the base count is taken from a u8
    and a few bits, it is safe to assume that it will always be lower than
    or equal to 2*255, thus we can always prevent any overflow by accepting
    two less 255 steps.
    
    This patch also reduces the CPU overhead and actually increases performance
    by 1.1% compared to the initial code, while the previous fix costs 3.1%
    (measured on x86_64).
    
    The fix needs to be backported to all currently supported stable kernels.
    
    Reported-by: Willem Pinckaers <willem@lekkertech.net>
    Cc: "Don A. Bailey" <donb@securitymouse.com>
    Signed-off-by: Willy Tarreau <w@1wt.eu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1fd32779366cd360ed7f81ffb8945f1d4f453a3f
Author: Willy Tarreau <w@1wt.eu>
Date:   Sat Sep 27 12:31:36 2014 +0200

    Revert "lzo: properly check for overruns"
    
    commit af958a38a60c7ca3d8a39c918c1baa2ff7b6b233 upstream.
    
    This reverts commit 206a81c ("lzo: properly check for overruns").
    
    As analysed by Willem Pinckaers, this fix is still incomplete on
    certain rare corner cases, and it is easier to restart from the
    original code.
    
    Reported-by: Willem Pinckaers <willem@lekkertech.net>
    Cc: "Don A. Bailey" <donb@securitymouse.com>
    Signed-off-by: Willy Tarreau <w@1wt.eu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 200206470d4f9081055a495faaa86619cb16c30c
Author: Willy Tarreau <w@1wt.eu>
Date:   Sat Sep 27 12:31:35 2014 +0200

    Documentation: lzo: document part of the encoding
    
    commit d98a0526434d27e261f622cf9d2e0028b5ff1a00 upstream.
    
    Add a complete description of the LZO format as processed by the
    decompressor. I have not found a public specification of this format
    hence this analysis, which will be used to better understand the code.
    
    Cc: Willem Pinckaers <willem@lekkertech.net>
    Cc: "Don A. Bailey" <donb@securitymouse.com>
    Signed-off-by: Willy Tarreau <w@1wt.eu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f19982ef5d0679531a8377b35c39e40971cd99ab
Author: Olga Kornievskaia <kolga@netapp.com>
Date:   Wed Sep 24 18:11:28 2014 -0400

    Fixing lease renewal
    
    commit 8faaa6d5d48b201527e0451296d9e71d23afb362 upstream.
    
    Commit c9fdeb28 removed a 'continue' after checking if the lease needs
    to be renewed. However, if client hasn't moved, the code falls down to
    starting reboot recovery erroneously (ie., sends open reclaim and gets
    back stale_clientid error) before recovering from getting stale_clientid
    on the renew operation.
    
    Signed-off-by: Olga Kornievskaia <kolga@netapp.com>
    Fixes: c9fdeb280b8c (NFS: Add basic migration support to state manager thread)
    Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 14f90acbe84dbde1b5eff8295ff85a873d8663a4
Author: Geert Uytterhoeven <geert@linux-m68k.org>
Date:   Sun Sep 28 10:50:06 2014 +0200

    m68k: Disable/restore interrupts in hwreg_present()/hwreg_write()
    
    commit e4dc601bf99ccd1c95b7e6eef1d3cf3c4b0d4961 upstream.
    
    hwreg_present() and hwreg_write() temporarily change the VBR register to
    another vector table. This table contains a valid bus error handler
    only, all other entries point to arbitrary addresses.
    
    If an interrupt comes in while the temporary table is active, the
    processor will start executing at such an arbitrary address, and the
    kernel will crash.
    
    While most callers run early, before interrupts are enabled, or
    explicitly disable interrupts, Finn Thain pointed out that macsonic has
    one callsite that doesn't, causing intermittent boot crashes.
    There's another unsafe callsite in hilkbd.
    
    Fix this for good by disabling and restoring interrupts inside
    hwreg_present() and hwreg_write().
    
    Explicitly disabling interrupts can be removed from the callsites later.
    
    Reported-by: Finn Thain <fthain@telegraphics.com.au>
    Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2ef3e6b09bdf3a2a1f2c597038f434d3f26bcf99
Author: Alexander Usyskin <alexander.usyskin@intel.com>
Date:   Mon Aug 25 16:46:53 2014 +0300

    mei: bus: fix possible boundaries violation
    
    commit cfda2794b5afe7ce64ee9605c64bef0e56a48125 upstream.
    
    function 'strncpy' will fill whole buffer 'id.name' of fixed size (32)
    with string value and will not leave place for NULL-terminator.
    Possible buffer boundaries violation in following string operations.
    Replace strncpy with strlcpy.
    
    Signed-off-by: Alexander Usyskin <alexander.usyskin@intel.com>
    Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0ab92d294a5e9b527d25a45fb0de9b10ca4df940
Author: K. Y. Srinivasan <kys@microsoft.com>
Date:   Thu Aug 28 18:29:52 2014 -0700

    Drivers: hv: vmbus: Cleanup hv_post_message()
    
    commit b29ef3546aecb253a5552b198cef23750d56e1e4 upstream.
    
    Minimize failures in this function by pre-allocating the buffer
    for posting messages. The hypercall for posting the message can fail
    for a number of reasons:
    
            1. Transient resource related issues
            2. Buffer alignment
            3. Buffer cannot span a page boundry
    
    We address issues 2 and 3 by preallocating a per-cpu page for the buffer.
    Transient resource related failures are handled by retrying by the callers
    of this function.
    
    This patch is based on the investigation
    done by Dexuan Cui <decui@microsoft.com>.
    
    I would like to thank Sitsofe Wheeler <sitsofe@yahoo.com>
    for reporting the issue and helping in debuggging.
    
    Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
    Reported-by: Sitsofe Wheeler <sitsofe@yahoo.com>
    Tested-by: Sitsofe Wheeler <sitsofe@yahoo.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 51d2221f27affb219fe73d5949932ab0ca21ae62
Author: K. Y. Srinivasan <kys@microsoft.com>
Date:   Wed Aug 27 16:25:35 2014 -0700

    Drivers: hv: vmbus: Fix a bug in vmbus_open()
    
    commit 45d727cee9e200f5b351528b9fb063b69cf702c8 upstream.
    
    Fix a bug in vmbus_open() and properly propagate the error. I would
    like to thank Dexuan Cui <decui@microsoft.com> for identifying the
    issue.
    
    Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
    Tested-by: Sitsofe Wheeler <sitsofe@yahoo.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 96ef7d4bc55051546202eabbd27e4eb894939d3a
Author: K. Y. Srinivasan <kys@microsoft.com>
Date:   Wed Aug 27 16:25:34 2014 -0700

    Drivers: hv: vmbus: Cleanup vmbus_establish_gpadl()
    
    commit 72c6b71c245dac8f371167d97ef471b367d0b66b upstream.
    
    Eliminate the call to BUG_ON() by waiting for the host to respond. We are
    trying to reclaim the ownership of memory that was given to the host and so
    we will have to wait until the host responds.
    
    Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
    Tested-by: Sitsofe Wheeler <sitsofe@yahoo.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 73ac8e5ab39ec5c970d54018a9a54d7c98707822
Author: K. Y. Srinivasan <kys@microsoft.com>
Date:   Wed Aug 27 16:25:33 2014 -0700

    Drivers: hv: vmbus: Cleanup vmbus_close_internal()
    
    commit 98d731bb064a9d1817a6ca9bf8b97051334a7cfe upstream.
    
    Eliminate calls to BUG_ON() in vmbus_close_internal().
    We have chosen to potentially leak memory, than crash the guest
    in case of failures.
    
    In this version of the patch I have addressed comments from
    Dan Carpenter (dan.carpenter@oracle.com).
    
    Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
    Tested-by: Sitsofe Wheeler <sitsofe@yahoo.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 552cb2dc6c7e932f00e179c7e2709aefd7bb7e4b
Author: K. Y. Srinivasan <kys@microsoft.com>
Date:   Wed Aug 27 16:25:32 2014 -0700

    Drivers: hv: vmbus: Cleanup vmbus_teardown_gpadl()
    
    commit 66be653083057358724d56d817e870e53fb81ca7 upstream.
    
    Eliminate calls to BUG_ON() by properly handling errors. In cases where
    rollback is possible, we will return the appropriate error to have the
    calling code decide how to rollback state. In the case where we are
    transferring ownership of the guest physical pages to the host,
    we will wait for the host to respond.
    
    Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
    Tested-by: Sitsofe Wheeler <sitsofe@yahoo.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1b51cf3ee3db37b43e0f4d1b71217cc18e3c6a90
Author: K. Y. Srinivasan <kys@microsoft.com>
Date:   Wed Aug 27 16:25:31 2014 -0700

    Drivers: hv: vmbus: Cleanup vmbus_post_msg()
    
    commit fdeebcc62279119dbeafbc1a2e39e773839025fd upstream.
    
    Posting messages to the host can fail because of transient resource
    related failures. Correctly deal with these failures and increase the
    number of attempts to post the message before giving up.
    
    In this version of the patch, I have normalized the error code to
    Linux error code.
    
    Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
    Tested-by: Sitsofe Wheeler <sitsofe@yahoo.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6d9ac4d681bc52c2c600292654f976cbb48a0a39
Author: K. Y. Srinivasan <kys@microsoft.com>
Date:   Tue Sep 2 19:21:47 2014 -0700

    Drivers: hv: util: Properly pack the data for file copy functionality
    
    commit bc5a5b02331a3175a5fca20a4beba249e573b672 upstream.
    
    Properly pack the data for file copy functionality. Patch based on
    investigation done by Matej Muzila <mmuzila@redhat.com>
    
    Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
    Reported-by: <qge@redhat.com>
    Acked-by: Jason Wang <jasowang@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a29498d454b87712db3679baa66fcdf3c885149e
Author: Will Deacon <will.deacon@arm.com>
Date:   Mon Sep 22 11:19:04 2014 +0100

    arm64: debug: don't re-enable debug exceptions on return from el1_dbg
    
    commit 1059c6bf8534acda249e7e65c81e7696fb074dc1 upstream.
    
    When returning from a debug exception taken from EL1, we unmask debug
    exceptions after handling the exception. This is crucial for debug
    exceptions taken from EL0, so that any kernel work on the ret_to_user
    path can be debugged by kgdb.
    
    However, when returning back to EL1 the only thing left to do is to
    restore the original register state before the exception return. If
    single-step has been enabled by the debug exception handler, we will
    get stuck in an infinite debug exception loop, since we will take the
    step exception as soon as we unmask debug exceptions.
    
    This patch avoids unmasking debug exceptions on the debug exception
    return path when the exception was taken from EL1.
    
    Fixes: 2a2830703a23 (arm64: debug: avoid accessing mdscr_el1 on fault paths where possible)
    Reported-by: David Long <dave.long@linaro.org>
    Reported-by: AKASHI Takahiro <takahiro.akashi@linaro.org>
    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 64ab2bddeb3a13c1763ce19f2f6c959e26be16c4
Author: Kees Cook <keescook@chromium.org>
Date:   Thu Sep 18 11:25:37 2014 -0700

    firmware_class: make sure fw requests contain a name
    
    commit 471b095dfe0d693a8d624cbc716d1ee4d74eb437 upstream.
    
    An empty firmware request name will trigger warnings when building
    device names. Make sure this is caught earlier and rejected.
    
    The warning was visible via the test_firmware.ko module interface:
    
    echo -ne "\x00" > /sys/devices/virtual/misc/test_firmware/trigger_request
    
    Reported-by: Sasha Levin <sasha.levin@oracle.com>
    Signed-off-by: Kees Cook <keescook@chromium.org>
    Tested-by: Sasha Levin <sasha.levin@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e562f858daa84d87734a49767422b607b6129e69
Author: Krzysztof Kozlowski <k.kozlowski@samsung.com>
Date:   Mon Sep 29 14:42:21 2014 +0200

    dmaengine: pl330: Fix NULL pointer dereference on driver unbind
    
    commit 6e4a2a83f95826201bbd89f55522537ea52d1d67 upstream.
    
    Fix a NULL pointer dereference after unbinding the driver, if channel
    resources were not yet allocated (no call to
    pl330_alloc_chan_resources()):
    $ echo 12850000.mdma > /sys/bus/amba/drivers/dma-pl330/unbind
    [   13.606533] DMA pl330_control: removing pch: eeab6800, chan: eeab6814, thread:   (null)
    [   13.614472] Unable to handle kernel NULL pointer dereference at virtual address 0000000c
    [   13.622537] pgd = ee284000
    [   13.625228] [0000000c] *pgd=6e1e4831, *pte=00000000, *ppte=00000000
    [   13.631482] Internal error: Oops: 17 [#1] PREEMPT SMP ARM
    [   13.636859] Modules linked in:
    [   13.639903] CPU: 0 PID: 1 Comm: sh Not tainted 3.17.0-rc3-next-20140904-00004-g7020ffc33ca3-dirty #420
    [   13.649187] task: ee80a800 ti: ee888000 task.ti: ee888000
    [   13.654589] PC is at _stop+0x8/0x2c8
    [   13.658131] LR is at pl330_control+0x70/0x2e8
    [   13.662468] pc : [<c0206028>]    lr : [<c020649c>]    psr: 60000093
    [   13.662468] sp : ee889e58  ip : 00000001  fp : 000bab70
    [   13.673922] r10: eeab6814  r9 : ee16debc  r8 : 00000000
    [   13.679131] r7 : eeab685c  r6 : 60000013  r5 : ee16de10  r4 : eeab6800
    [   13.685641] r3 : 00000002  r2 : 00000000  r1 : 00010000  r0 : 00000000
    [   13.692153] Flags: nZCv  IRQs off  FIQs on  Mode SVC_32  ISA ARM  Segment user
    [   13.699357] Control: 10c5387d  Table: 6e28404a  DAC: 00000015
    [   13.705085] Process sh (pid: 1, stack limit = 0xee888240)
    [   13.710466] Stack: (0xee889e58 to 0xee88a000)
    [   13.714808] 9e40:                                                       00000002 eeab6800
    [   13.722969] 9e60: ee16de10 eeab6800 ee16de10 60000013 eeab685c c020649c 00000000 c040280c
    [   13.731128] 9e80: ee889e80 ee889e80 ee16de18 ee16de10 eeab6880 eeab6814 00200200 eeab68a8
    [   13.739287] 9ea0: 00100100 c0208048 00000000 c0409fc4 eea80800 eea808f8 c0605c44 0000000e
    [   13.747446] 9ec0: 0000000e eeb3960c eeb39600 c0203c48 eea80800 c0605c44 c0605a8c c023f694
    [   13.755605] 9ee0: ee80a800 eea80834 eea80800 c023f704 ee80a800 eea80800 c0605c44 c023e8ec
    [   13.763764] 9f00: 0000000e ee149780 ee29e580 ee889f80 ee29e580 c023e19c 0000000e c01167e4
    [   13.771923] 9f20: c01167a0 00000000 00000000 c0115e88 00000000 00000000 ee0b1a00 0000000e
    [   13.780082] 9f40: b6f48000 ee889f80 0000000e ee888000 b6f48000 c00bfadc 00000000 00000003
    [   13.788241] 9f60: 00000000 00000000 00000000 ee0b1a00 ee0b1a00 0000000e b6f48000 c00bfdf4
    [   13.796401] 9f80: 00000000 00000000 ffffffff 0000000e b6f48000 b6edc5d0 00000004 c000e7a4
    [   13.804560] 9fa0: 00000000 c000e620 0000000e b6f48000 00000001 b6f48000 0000000e 00000000
    [   13.812719] 9fc0: 0000000e b6f48000 b6edc5d0 00000004 0000000e b6f4c8c0 000c3470 000bab70
    [   13.820879] 9fe0: 00000000 bed2aa50 b6e18bdc b6e6b52c 60000010 00000001 c0c0c0c0 c0c0c0c0
    [   13.829058] [<c0206028>] (_stop) from [<c020649c>] (pl330_control+0x70/0x2e8)
    [   13.836165] [<c020649c>] (pl330_control) from [<c0208048>] (pl330_remove+0xb0/0xdc)
    [   13.843800] [<c0208048>] (pl330_remove) from [<c0203c48>] (amba_remove+0x24/0xc0)
    [   13.851272] [<c0203c48>] (amba_remove) from [<c023f694>] (__device_release_driver+0x70/0xc4)
    [   13.859685] [<c023f694>] (__device_release_driver) from [<c023f704>] (device_release_driver+0x1c/0x28)
    [   13.868971] [<c023f704>] (device_release_driver) from [<c023e8ec>] (unbind_store+0x58/0x90)
    [   13.877303] [<c023e8ec>] (unbind_store) from [<c023e19c>] (drv_attr_store+0x20/0x2c)
    [   13.885036] [<c023e19c>] (drv_attr_store) from [<c01167e4>] (sysfs_kf_write+0x44/0x48)
    [   13.892928] [<c01167e4>] (sysfs_kf_write) from [<c0115e88>] (kernfs_fop_write+0xc0/0x17c)
    [   13.901090] [<c0115e88>] (kernfs_fop_write) from [<c00bfadc>] (vfs_write+0xa0/0x1a8)
    [   13.908812] [<c00bfadc>] (vfs_write) from [<c00bfdf4>] (SyS_write+0x40/0x8c)
    [   13.915850] [<c00bfdf4>] (SyS_write) from [<c000e620>] (ret_fast_syscall+0x0/0x30)
    [   13.923392] Code: e5813010 e12fff1e e92d40f0 e24dd00c (e590200c)
    [   13.929467] ---[ end trace 10064e15a5929cf8 ]---
    
    Terminate the thread and free channel resource only if channel resources
    were allocated (thread is not NULL).
    
    Signed-off-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
    Fixes: b3040e40675e ("DMA: PL330: Add dma api driver")
    Reviewed-by: Lars-Peter Clausen <lars@metafoo.de>
    Signed-off-by: Vinod Koul <vinod.koul@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 98a58b899ac7aa40281a7d1a72899eb180e58161
Author: Krzysztof Kozlowski <k.kozlowski@samsung.com>
Date:   Mon Sep 29 14:42:20 2014 +0200

    dmaengine: pl330: Fix NULL pointer dereference on probe failure
    
    commit 0f5ebabdd03b471da1906f7edddc61ceb35cee02 upstream.
    
    If dma_async_device_register() returns error and probe should clean up
    and return error, a NULL pointer exception happens because of
    dereference of not allocated channel thread:
    
    Dmesg log (from early printk):
    dma-pl330 12680000.pdma: unable to register DMAC
    DMA pl330_control: removing pch: eeac4000, chan: eeac4014, thread:   (null)
    Unable to handle kernel NULL pointer dereference at virtual address 0000000c
    pgd = c0004000
    [0000000c] *pgd=00000000
    Internal error: Oops: 5 [#1] PREEMPT SMP ARM
    Modules linked in:
    CPU: 2 PID: 1 Comm: swapper/0 Not tainted 3.17.0-rc3-next-20140904-00005-g6cc4c1937d90-dirty #427
    task: ee80a800 ti: ee888000 task.ti: ee888000
    PC is at _stop+0x8/0x2c8
    LR is at pl330_control+0x70/0x2e8
    pc : [<c0205dc8>]    lr : [<c020623c>]    psr: 60000193
    sp : ee889df8  ip : 00000002  fp : 00000000
    r10: eeac4014  r9 : ee0e62bc  r8 : 00000000
    r7 : eeac405c  r6 : 60000113  r5 : ee0e6210  r4 : eeac4000
    r3 : 00000002  r2 : 00000002  r1 : 00010000  r0 : 00000000
    Flags: nZCv  IRQs off  FIQs on  Mode SVC_32  ISA ARM  Segment kernel
    Control: 10c5387d  Table: 4000404a  DAC: 00000015
    Process swapper/0 (pid: 1, stack limit = 0xee888240)
    Stack: (0xee889df8 to 0xee88a000)
    9de0:                                                       00000002 eeac4000
    9e00: ee0e6210 eeac4000 ee0e6210 60000113 eeac405c c020623c 00000000 c020725c
    9e20: ee889e20 ee889e20 ee0e6210 eeac4080 00200200 00100100 eeac4014 00000020
    9e40: ee0e6218 c0208374 00000000 ee9bb340 ee0e6210 00000000 00000000 c0605cd8
    9e60: ee970000 c0605c84 ee9700f8 00000000 c05c4270 00000000 00000000 c0203b3c
    9e80: ee970000 c06624a8 00000000 c0605c84 00000000 c023f890 ee970000 c0605c84
    9ea0: ee970034 00000000 c05b23d0 c023fa3c 00000000 c0605c84 c023f9b0 c023e0d4
    9ec0: ee947e78 ee9b9440 c0605c84 eea1e780 c0605acc c023f094 c0513b50 c0605c84
    9ee0: c05ecbd8 c0605c84 c05ecbd8 ee11ba40 c0626500 c0240064 00000000 c05ecbd8
    9f00: c05ecbd8 c0008964 c040f13c 0000009f c0626500 c057465c ee80a800 60000113
    9f20: 00000000 c05efdb0 60000113 00000000 ef7fc89d c0421168 0000008f c003787c
    9f40: c0573d6c 00000006 ef7fc8bb 00000006 c05efd50 ef7fc800 c05dfbc4 00000006
    9f60: c05c4264 c0626500 0000008f c05c4270 c059b518 c059bcb4 00000006 00000006
    9f80: c059b518 c003c08c 00000000 c040091c 00000000 00000000 00000000 00000000
    9fa0: 00000000 c0400924 00000000 c000e7b8 00000000 00000000 00000000 00000000
    9fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
    9fe0: 00000000 00000000 00000000 00000000 00000013 00000000 c0c0c0c0 c0c0c0c0
    [<c0205dc8>] (_stop) from [<c020623c>] (pl330_control+0x70/0x2e8)
    [<c020623c>] (pl330_control) from [<c0208374>] (pl330_probe+0x594/0x75c)
    [<c0208374>] (pl330_probe) from [<c0203b3c>] (amba_probe+0xb8/0x120)
    [<c0203b3c>] (amba_probe) from [<c023f890>] (driver_probe_device+0x10c/0x22c)
    [<c023f890>] (driver_probe_device) from [<c023fa3c>] (__driver_attach+0x8c/0x90)
    [<c023fa3c>] (__driver_attach) from [<c023e0d4>] (bus_for_each_dev+0x54/0x88)
    [<c023e0d4>] (bus_for_each_dev) from [<c023f094>] (bus_add_driver+0xd4/0x1d0)
    [<c023f094>] (bus_add_driver) from [<c0240064>] (driver_register+0x78/0xf4)
    [<c0240064>] (driver_register) from [<c0008964>] (do_one_initcall+0x80/0x1d0)
    [<c0008964>] (do_one_initcall) from [<c059bcb4>] (kernel_init_freeable+0x108/0x1d4)
    [<c059bcb4>] (kernel_init_freeable) from [<c0400924>] (kernel_init+0x8/0xec)
    [<c0400924>] (kernel_init) from [<c000e7b8>] (ret_from_fork+0x14/0x3c)
    Code: e5813010 e12fff1e e92d40f0 e24dd00c (e590200c)
    ---[ end trace c94b2f4f38dff3bf ]---
    
    This happens because the necessary resources were not yet allocated - no
    call to pl330_alloc_chan_resources().
    
    Terminate the thread and free channel resource only if channel thread is not NULL.
    
    Signed-off-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
    Fixes: 0b94c5771705 ("DMA: PL330: Add check if device tree compatible")
    Reviewed-by: Lars-Peter Clausen <lars@metafoo.de>
    Signed-off-by: Vinod Koul <vinod.koul@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 935e054a61596d4ac83a76ca2b849a64b1eed691
Author: Xuelin Shi <xuelin.shi@freescale.com>
Date:   Tue Jul 1 16:32:38 2014 +0800

    dmaengine: fix xor sources continuation
    
    commit 87cea76384257e6ac3fa4791b6a6b9d0335f7457 upstream.
    
    the partial xor result must be kept until the next
    tx is generated.
    
    Signed-off-by: Xuelin Shi <xuelin.shi@freescale.com>
    Signed-off-by: Dan Williams <dan.j.williams@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 103997a3328f0db243b88da15df951d7cf07e404
Author: Joe Lawrence <joe.lawrence@stratus.com>
Date:   Tue Aug 26 17:10:41 2014 -0400

    qla2xxx: Fix shost use-after-free on device removal
    
    commit db7157d4cfce6edf052452fb1d327d4d11b67f4c upstream.
    
    Once calling scsi_host_put, be careful to not access qla_hw_data through
    the Scsi_Host private data (ie, scsi_qla_host base_vha).
    
    Fixes: fe1b806f4f71 ("qla2xxx: Refactor shutdown code so some functionality can be reused")
    Signed-off-by: Joe Lawrence <joe.lawrence@stratus.com>
    Acked-by: Chad Dupuis <chad.dupuis@qlogic.com>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4778734aaa2cbb03f01a552cd7d9eb626ededb25
Author: Arun Easi <arun.easi@qlogic.com>
Date:   Thu Sep 25 06:14:45 2014 -0400

    qla2xxx: Use correct offset to req-q-out for reserve calculation
    
    commit 75554b68ac1e018bca00d68a430b92ada8ab52dd upstream.
    
    Signed-off-by: Arun Easi <arun.easi@qlogic.com>
    Signed-off-by: Saurav Kashyap <saurav.kashyap@qlogic.com>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d20854ce0d0d5db912539e5b1c5d2635a4bcb147
Author: Himanshu Madhani <himanshu.madhani@qlogic.com>
Date:   Thu Sep 25 06:14:44 2014 -0400

    qla2xxx: fix kernel NULL pointer access
    
    commit 78c2106a50e067f7168ee8c0944baaeb0e988272 upstream.
    
    This patch is to fix regression added by commit id
    51a07f84649d2be206c4c2ad9a612956db0c2f8c.
    
    When allocating memory for new session original patch does
    not assign vha to op->vha resulting into NULL pointer
    access during qlt_create_sess_from_atio().
    
    Signed-off-by: Himanshu Madhani <himanshu.madhani@qlogic.com>
    Signed-off-by: Saurav Kashyap <saurav.kashyap@qlogic.com>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4ad6504a7da39817bb0cb7602fdd31f28969924b
Author: Steffen Trumtrar <s.trumtrar@pengutronix.de>
Date:   Thu Sep 25 16:39:11 2014 +0200

    regulator: ltc3589: fix broken voltage transitions
    
    commit c5bb725ac2d1a13e9e766bf9a16bac986ade17cd upstream.
    
    VCCR is used as a trigger to start voltage transitions, so
    we need to mark it volatile in order to make sure it gets
    written to hardware every time we set a new voltage.
    
    Fixes regulator voltage being stuck at the first voltage
    set after driver load.
    
    [lst: reworded commit message]
    Signed-off-by: Steffen Trumtrar <s.trumtrar@pengutronix.de>
    Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f5fba53e0a6a8e3e2d287fa08dc83366f81e1526
Author: Chris J Arges <chris.j.arges@canonical.com>
Date:   Tue Sep 23 09:22:25 2014 -0500

    mptfusion: enable no_write_same for vmware scsi disks
    
    commit 4089b71cc820a426d601283c92fcd4ffeb5139c2 upstream.
    
    When using a virtual SCSI disk in a VMWare VM if blkdev_issue_zeroout is used
    data can be improperly zeroed out using the mptfusion driver. This patch
    disables write_same for this driver and the vmware subsystem_vendor which
    ensures that manual zeroing out is used instead.
    
    BugLink: http://bugs.launchpad.net/bugs/1371591
    Reported-by: Bruce Lucas <bruce.lucas@mongodb.com>
    Tested-by: Chris J Arges <chris.j.arges@canonical.com>
    Signed-off-by: Chris J Arges <chris.j.arges@canonical.com>
    Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 17b48b83ce69a3f9e934c0dad178a79a9277b738
Author: Mike Christie <michaelc@cs.wisc.edu>
Date:   Mon Sep 29 13:55:41 2014 -0500

    be2iscsi: check ip buffer before copying
    
    commit a41a9ad3bbf61fae0b6bfb232153da60d14fdbd9 upstream.
    
    Dan Carpenter found a issue where be2iscsi would copy the ip
    from userspace to the driver buffer before checking the len
    of the data being copied:
    http://marc.info/?l=linux-scsi&m=140982651504251&w=2
    
    This patch just has us only copy what we the driver buffer
    can support.
    
    Tested-by: John Soni Jose <sony.john-n@emulex.com>
    Signed-off-by: Mike Christie <michaelc@cs.wisc.edu>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cd487ab059f0875c892e5ffbcff97ca88dc6ff33
Author: Xiubo Li <Li.Xiubo@freescale.com>
Date:   Sun Sep 28 17:09:54 2014 +0800

    regmap: fix possible ZERO_SIZE_PTR pointer dereferencing error.
    
    commit d6b41cb06044a7d895db82bdd54f6e4219970510 upstream.
    
    Since we cannot make sure the 'val_count' will always be none zero
    here, and then if it equals to zero, the kmemdup() will return
    ZERO_SIZE_PTR, which equals to ((void *)16).
    
    So this patch fix this with just doing the zero check before calling
    kmemdup().
    
    Signed-off-by: Xiubo Li <Li.Xiubo@freescale.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a574c3b4ef8fbdc2cd28f209115e458563c79d84
Author: Pankaj Dubey <pankaj.dubey@samsung.com>
Date:   Sat Sep 27 09:47:55 2014 +0530

    regmap: fix NULL pointer dereference in _regmap_write/read
    
    commit 5336be8416a71b5568d2cf54a2f2066abe9f2a53 upstream.
    
    If LOG_DEVICE is defined and map->dev is NULL it will lead to NULL
    pointer dereference. This patch fixes this issue by adding check for
    dev->NULL in all such places in regmap.c
    
    Signed-off-by: Pankaj Dubey <pankaj.dubey@samsung.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6a911fb78f4cb42ba74053efeb08f7264e5d125b
Author: Xiubo Li <Li.Xiubo@freescale.com>
Date:   Sun Sep 28 11:35:25 2014 +0800

    regmap: debugfs: fix possbile NULL pointer dereference
    
    commit 2c98e0c1cc6b8e86f1978286c3d4e0769ee9d733 upstream.
    
    If 'map->dev' is NULL and there will lead dev_name() to be NULL pointer
    dereference. So before dev_name(), we need to have check of the map->dev
    pionter.
    
    We also should make sure that the 'name' pointer shouldn't be NULL for
    debugfs_create_dir(). So here using one default "dummy" debugfs name when
    the 'name' pointer and 'map->dev' are both NULL.
    
    Signed-off-by: Xiubo Li <Li.Xiubo@freescale.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 358cc1e19edf665e783109950d081a0216362f38
Author: Borislav Petkov <bp@suse.de>
Date:   Tue Sep 30 12:55:41 2014 +0200

    mpc85xx_edac: Make L2 interrupt shared too
    
    commit a18c3f16a907b8977ef65fc8dd71ed3f7b751748 upstream.
    
    The other two interrupt handlers in this driver are shared, except this
    one. When loading the driver, it fails like this.
    
    So make the IRQ line shared.
    
    Freescale(R) MPC85xx EDAC driver, (C) 2006 Montavista Software
    mpc85xx_mc_err_probe: No ECC DIMMs discovered
    EDAC DEVICE0: Giving out device to module MPC85xx_edac controller mpc85xx_l2_err: DEV mpc85xx_l2_err (INTERRUPT)
    genirq: Flags mismatch irq 16. 00000000 ([EDAC] L2 err) vs. 00000080 ([EDAC] PCI err)
    mpc85xx_l2_err_probe: Unable to request irq 16 for MPC85xx L2 err
    remove_proc_entry: removing non-empty directory 'irq/16', leaking at least 'aerdrv'
    ------------[ cut here ]------------
    WARNING: at fs/proc/generic.c:521
    Modules linked in:
    CPU: 0 PID: 1 Comm: swapper/0 Not tainted 3.17.0-rc5-dirty #1
    task: ee058000 ti: ee046000 task.ti: ee046000
    NIP: c016c0c4 LR: c016c0c4 CTR: c037b51c
    REGS: ee047c10 TRAP: 0700 Not tainted (3.17.0-rc5-dirty)
    MSR: 00029000 <CE,EE,ME> CR: 22008022 XER: 20000000
    
    GPR00: c016c0c4 ee047cc0 ee058000 00000053 00029000 00000000 c037c744 00000003
    GPR08: c09aab28 c09aab24 c09aab28 00000156 20008028 00000000 c0002ac8 00000000
    GPR16: 00000000 00000000 00000000 00000000 00000000 00000000 00000139 c0950394
    GPR24: c09f0000 ee5585b0 ee047d08 c0a10000 ee047d08 ee15f808 00000002 ee03f660
    NIP [c016c0c4] remove_proc_entry
    LR [c016c0c4] remove_proc_entry
    Call Trace:
    remove_proc_entry (unreliable)
    unregister_irq_proc
    free_desc
    irq_free_descs
    mpc85xx_l2_err_probe
    platform_drv_probe
    really_probe
    __driver_attach
    bus_for_each_dev
    bus_add_driver
    driver_register
    mpc85xx_mc_init
    do_one_initcall
    kernel_init_freeable
    kernel_init
    ret_from_kernel_thread
    Instruction dump: ...
    
    Reported-and-tested-by: <lpb_098@163.com>
    Acked-by: Johannes Thumshirn <johannes.thumshirn@men.de>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ce3eba07f57ddeb53f8d576f3091d9b33efcbb07
Author: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Date:   Wed Sep 10 18:02:37 2014 -0700

    HID: rmi: check sanity of the incoming report
    
    commit 5b65c2a0296644dd3dbdd590d6f00174d18c96b3 upstream.
    
    In the Dell XPS 13 9333, it appears that sometimes the bus get confused
    and corrupts the incoming data. It fills the input report with the
    sentinel value "ff". Synaptics told us that such behavior does not comes
    from the touchpad itself, so we filter out such reports here.
    
    Unfortunately, we can not simply discard the incoming data because they
    may contain useful information. Most of the time, the misbehavior is
    quite near the end of the report, so we can still use the valid part of
    it.
    
    Fixes:
    https://bugzilla.redhat.com/show_bug.cgi?id=1123584
    
    Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
    Signed-off-by: Andrew Duggan <aduggan@synaptics.com>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 42b0daa78ec43eb2b4e9a80e6dba0c237b1f778f
Author: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Date:   Tue Sep 16 16:56:39 2014 -0400

    HID: wacom: fix timeout on probe for some wacoms
    
    commit 8ffffd5212846b72f116f7a9572e83d580e25802 upstream.
    
    Some Wacom tablets (at least the ISDv4 found in the Lenovo X230) timeout
    during probe while retrieving the input reports.
    The only time this information is valuable is during the feature_mapping
    stage, so we can ask for it there and discard the generic input reports
    retrieval.
    
    This gives a code path closer to the wacom.ko driver when it was in the
    input subtree (not HID).
    
    Signed-off-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 dfdbe2eb1439432f1740760c9e8e489177d13b0a
Author: Ping Cheng <pinglinux@gmail.com>
Date:   Wed Sep 10 12:41:04 2014 -0700

    HID: wacom - remove report_id from wacom_get_report interface
    
    commit c64d883476812783e0400d37028756151d103e5c upstream.
    
    It is assigned in buf[0] anyway.
    
    Signed-off-by: Ping Cheng <pingc@wacom.com>
    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 79f91ed4fd008e1ed4c56cf6d367cc938e6fab11
Author: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Date:   Fri Sep 12 15:11:58 2014 +0300

    spi: dw-mid: check that DMA was inited before exit
    
    commit fb57862ead652454ceeb659617404c5f13bc34b5 upstream.
    
    If the driver was compiled with DMA support, but DMA channels weren't acquired
    by some reason, mid_spi_dma_exit() will crash the kernel.
    
    Fixes: 7063c0d942a1 (spi/dw_spi: add DMA support)
    Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 00c803f5028aa87bc79a25a1b22cc20f64a58ba1
Author: Addy Ke <addy.ke@rock-chips.com>
Date:   Thu Sep 25 14:59:41 2014 +0800

    spi/rockchip: fix bug that cause the failure to read data in DMA mode
    
    commit a24e70c0ac146f8bcae3cdb7f514950d5b32219e upstream.
    
    In my test on RK3288-pinky board, if spi is enabled, it will begin to
    read data from slave regardless of whether the DMA is ready. So we
    need prepare DMA before spi is enable.
    
    Signed-off-by: Addy Ke <addy.ke@rock-chips.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d772230128c7f499ca06eb92a8489a8d136aa7b2
Author: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Date:   Thu Sep 18 20:08:51 2014 +0300

    spi: dw-mid: respect 8 bit mode
    
    commit b41583e7299046abdc578c33f25ed83ee95b9b31 upstream.
    
    In case of 8 bit mode and DMA usage we end up with every second byte written as
    0. We have to respect bits_per_word settings what this patch actually does.
    
    Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 51f461058119a3162f2c1980f99fd89dfada21c7
Author: Bryan O'Donoghue <pure.logic@nexus-software.ie>
Date:   Wed Sep 24 00:26:24 2014 +0100

    x86/intel/quark: Switch off CR4.PGE so TLB flush uses CR3 instead
    
    commit ee1b5b165c0a2f04d2107e634e51f05d0eb107de upstream.
    
    Quark x1000 advertises PGE via the standard CPUID method
    PGE bits exist in Quark X1000's PTEs. In order to flush
    an individual PTE it is necessary to reload CR3 irrespective
    of the PTE.PGE bit.
    
    See Quark Core_DevMan_001.pdf section 6.4.11
    
    This bug was fixed in Galileo kernels, unfixed vanilla kernels are expected to
    crash and burn on this platform.
    
    Signed-off-by: Bryan O'Donoghue <pure.logic@nexus-software.ie>
    Cc: Borislav Petkov <bp@alien8.de>
    Link: http://lkml.kernel.org/r/1411514784-14885-1-git-send-email-pure.logic@nexus-software.ie
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0af1b6719eca8725b88ac0c0321da54a7fedb23a
Author: Andy Lutomirski <luto@amacapital.net>
Date:   Wed Oct 8 09:02:13 2014 -0700

    x86,kvm,vmx: Preserve CR4 across VM entry
    
    commit d974baa398f34393db76be45f7d4d04fbdbb4a0a upstream.
    
    CR4 isn't constant; at least the TSD and PCE bits can vary.
    
    TBH, treating CR0 and CR3 as constant scares me a bit, too, but it looks
    like it's correct.
    
    This adds a branch and a read from cr4 to each vm entry.  Because it is
    extremely likely that consecutive entries into the same vcpu will have
    the same host cr4 value, this fixes up the vmcs instead of restoring cr4
    after the fact.  A subsequent patch will add a kernel-wide cr4 shadow,
    reducing the overhead in the common case to just two memory reads and a
    branch.
    
    Signed-off-by: Andy Lutomirski <luto@amacapital.net>
    Acked-by: Paolo Bonzini <pbonzini@redhat.com>
    Cc: Petr Matousek <pmatouse@redhat.com>
    Cc: Gleb Natapov <gleb@kernel.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2b40b3639fdcf9dd39b13389243f7c2c46cd87bd
Author: David Matlack <dmatlack@google.com>
Date:   Fri Sep 19 16:03:25 2014 -0700

    kvm: don't take vcpu mutex for obviously invalid vcpu ioctls
    
    commit 2ea75be3219571d0ec009ce20d9971e54af96e09 upstream.
    
    vcpu ioctls can hang the calling thread if issued while a vcpu is running.
    However, invalid ioctls can happen when userspace tries to probe the kind
    of file descriptors (e.g. isatty() calls ioctl(TCGETS)); in that case,
    we know the ioctl is going to be rejected as invalid anyway and we can
    fail before trying to take the vcpu mutex.
    
    This patch does not change functionality, it just makes invalid ioctls
    fail faster.
    
    Signed-off-by: David Matlack <dmatlack@google.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 30d863aa7a742129a7b964e61ae92b812eb4eb88
Author: Christian Borntraeger <borntraeger@de.ibm.com>
Date:   Wed Sep 3 16:21:32 2014 +0200

    KVM: s390: unintended fallthrough for external call
    
    commit f346026e55f1efd3949a67ddd1dcea7c1b9a615e upstream.
    
    We must not fallthrough if the conditions for external call are not met.
    
    Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
    Reviewed-by: Thomas Huth <thuth@linux.vnet.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 56f90a37fc00af0d746bf47828bf00998bf78797
Author: Paolo Bonzini <pbonzini@redhat.com>
Date:   Wed Aug 20 14:29:21 2014 +0200

    KVM: do not bias the generation number in kvm_current_mmio_generation
    
    commit 00f034a12fdd81210d58116326d92780aac5c238 upstream.
    
    The next patch will give a meaning (a la seqcount) to the low bit of the
    generation number.  Ensure that it matches between kvm->memslots->generation
    and kvm_current_mmio_generation().
    
    Reviewed-by: David Matlack <dmatlack@google.com>
    Reviewed-by: Xiao Guangrong <xiaoguangrong@linux.vnet.ibm.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0e31fc03c3475a0f336106926ecb577cdd1b7324
Author: David Matlack <dmatlack@google.com>
Date:   Mon Aug 18 15:46:06 2014 -0700

    kvm: fix potentially corrupt mmio cache
    
    commit ee3d1570b58677885b4552bce8217fda7b226a68 upstream.
    
    vcpu exits and memslot mutations can run concurrently as long as the
    vcpu does not aquire the slots mutex. Thus it is theoretically possible
    for memslots to change underneath a vcpu that is handling an exit.
    
    If we increment the memslot generation number again after
    synchronize_srcu_expedited(), vcpus can safely cache memslot generation
    without maintaining a single rcu_dereference through an entire vm exit.
    And much of the x86/kvm code does not maintain a single rcu_dereference
    of the current memslots during each exit.
    
    We can prevent the following case:
    
       vcpu (CPU 0)                             | thread (CPU 1)
    --------------------------------------------+--------------------------
    1  vm exit                                  |
    2  srcu_read_unlock(&kvm->srcu)             |
    3  decide to cache something based on       |
         old memslots                           |
    4                                           | change memslots
                                                | (increments generation)
    5                                           | synchronize_srcu(&kvm->srcu);
    6  retrieve generation # from new memslots  |
    7  tag cache with new memslot generation    |
    8  srcu_read_unlock(&kvm->srcu)             |
    ...                                         |
       <action based on cache occurs even       |
        though the caching decision was based   |
        on the old memslots>                    |
    ...                                         |
       <action *continues* to occur until next  |
        memslot generation change, which may    |
        be never>                               |
                                                |
    
    By incrementing the generation after synchronizing with kvm->srcu readers,
    we ensure that the generation retrieved in (6) will become invalid soon
    after (8).
    
    Keeping the existing increment is not strictly necessary, but we
    do keep it and just move it for consistency from update_memslots to
    install_new_memslots.  It invalidates old cached MMIOs immediately,
    instead of having to wait for the end of synchronize_srcu_expedited,
    which makes the code more clearly correct in case CPU 1 is preempted
    right after synchronize_srcu() returns.
    
    To avoid halving the generation space in SPTEs, always presume that the
    low bit of the generation is zero when reconstructing a generation number
    out of an SPTE.  This effectively disables MMIO caching in SPTEs during
    the call to synchronize_srcu_expedited.  Using the low bit this way is
    somewhat like a seqcount---where the protected thing is a cache, and
    instead of retrying we can simply punt if we observe the low bit to be 1.
    
    Signed-off-by: David Matlack <dmatlack@google.com>
    Reviewed-by: Xiao Guangrong <xiaoguangrong@linux.vnet.ibm.com>
    Reviewed-by: David Matlack <dmatlack@google.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 39ebec5778f86375cd59082898c4974f6d9e7fee
Author: David Matlack <dmatlack@google.com>
Date:   Mon Aug 18 15:46:07 2014 -0700

    kvm: x86: fix stale mmio cache bug
    
    commit 56f17dd3fbc44adcdbc3340fe3988ddb833a47a7 upstream.
    
    The following events can lead to an incorrect KVM_EXIT_MMIO bubbling
    up to userspace:
    
    (1) Guest accesses gpa X without a memory slot. The gfn is cached in
    struct kvm_vcpu_arch (mmio_gfn). On Intel EPT-enabled hosts, KVM sets
    the SPTE write-execute-noread so that future accesses cause
    EPT_MISCONFIGs.
    
    (2) Host userspace creates a memory slot via KVM_SET_USER_MEMORY_REGION
    covering the page just accessed.
    
    (3) Guest attempts to read or write to gpa X again. On Intel, this
    generates an EPT_MISCONFIG. The memory slot generation number that
    was incremented in (2) would normally take care of this but we fast
    path mmio faults through quickly_check_mmio_pf(), which only checks
    the per-vcpu mmio cache. Since we hit the cache, KVM passes a
    KVM_EXIT_MMIO up to userspace.
    
    This patch fixes the issue by using the memslot generation number
    to validate the mmio cache.
    
    Signed-off-by: David Matlack <dmatlack@google.com>
    [xiaoguangrong: adjust the code to make it simpler for stable-tree fix.]
    Signed-off-by: Xiao Guangrong <xiaoguangrong@linux.vnet.ibm.com>
    Reviewed-by: David Matlack <dmatlack@google.com>
    Reviewed-by: Xiao Guangrong <xiaoguangrong@linux.vnet.ibm.com>
    Tested-by: David Matlack <dmatlack@google.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ce74113f402d5354f9bd07262fb0533e05509724
Author: Josef Ahmad <josef.ahmad@intel.com>
Date:   Tue Sep 2 13:45:20 2014 +0300

    pci_ids: Add support for Intel Quark ILB
    
    commit bb048713bba3ead39f6112910906d9fe3f88ede7 upstream.
    
    This patch adds the PCI id for Intel Quark ILB.
    It will be used for GPIO and Multifunction device driver.
    
    Signed-off-by: Josef Ahmad <josef.ahmad@intel.com>
    Acked-by: Bjorn Helgaas <bhelgaas@google.com>
    Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Signed-off-by: Lee Jones <lee.jones@linaro.org>
    Signed-off-by: Chang Rebecca Swee Fun <rebecca.swee.fun.chang@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 28f64f916f0d70e65f6744e41329815c3805f9c5
Author: Andy Lutomirski <luto@amacapital.net>
Date:   Wed Oct 8 12:32:47 2014 -0700

    fs: Add a missing permission check to do_umount
    
    commit a1480dcc3c706e309a88884723446f2e84fedd5b upstream.
    
    Accessing do_remount_sb should require global CAP_SYS_ADMIN, but
    only one of the two call sites was appropriately protected.
    
    Fixes CVE-2014-7975.
    
    Signed-off-by: Andy Lutomirski <luto@amacapital.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0bd77290116d6bbbeaf173037eddbeea44c66ea1
Author: Chris Mason <clm@fb.com>
Date:   Wed Oct 15 13:50:56 2014 -0700

    Revert "Btrfs: race free update of commit root for ro snapshots"
    
    commit d37973082b453ba6b89ec07eb7b84305895d35e1 upstream.
    
    This reverts commit 9c3b306e1c9e6be4be09e99a8fe2227d1005effc.
    
    Switching only one commit root during a transaction is wrong because it
    leads the fs into an inconsistent state. All commit roots should be
    switched at once, at transaction commit time, otherwise backref walking
    can often miss important references that were only accessible through
    the old commit root.  Plus, the root item for the snapshot's root wasn't
    getting updated and preventing the next transaction commit to do it.
    
    This made several users get into random corruption issues after creation
    of readonly snapshots.
    
    A regression test for xfstests will follow soon.
    
    Cc: stable@vger.kernel.org # 3.17
    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 a321813efe3461d65e57eef48dab32e129d020a8
Author: Sage Weil <sage@redhat.com>
Date:   Fri Sep 26 08:30:06 2014 -0700

    Btrfs: fix race in WAIT_SYNC ioctl
    
    commit 42383020beb1cfb05f5d330cc311931bc4917a97 upstream.
    
    We check whether transid is already committed via last_trans_committed and
    then search through trans_list for pending transactions.  If
    last_trans_committed is updated by btrfs_commit_transaction after we check
    it (there is no locking), we will fail to find the committed transaction
    and return EINVAL to the caller.  This has been observed occasionally by
    ceph-osd (which uses this ioctl heavily).
    
    Fix by rechecking whether the provided transid <= last_trans_committed
    after the search fails, and if so return 0.
    
    Signed-off-by: Sage Weil <sage@redhat.com>
    Signed-off-by: Chris Mason <clm@fb.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d20a3a26e505bf4db7345027f2d42119e5e894b2
Author: Qu Wenruo <quwenruo@cn.fujitsu.com>
Date:   Mon Sep 22 09:13:03 2014 +0800

    btrfs: Fix the wrong condition judgment about subset extent map
    
    commit 32be3a1ac6d09576c57063c6c350ca36eaebdbd3 upstream.
    
    Previous commit: btrfs: Fix and enhance merge_extent_mapping() to insert
    best fitted extent map
    is using wrong condition to judgement whether the range is a subset of a
    existing extent map.
    
    This may cause bug in btrfs no-holes mode.
    
    This patch will correct the judgment and fix the bug.
    
    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 985ee9f48778f01bd34b31400dc22f1c7e96220a
Author: Josef Bacik <jbacik@fb.com>
Date:   Fri Sep 19 15:43:34 2014 -0400

    Btrfs: fix build_backref_tree issue with multiple shared blocks
    
    commit bbe9051441effce51c9a533d2c56440df64db2d7 upstream.
    
    Marc Merlin sent me a broken fs image months ago where it would blow up in the
    upper->checked BUG_ON() in build_backref_tree.  This is because we had a
    scenario like this
    
    block a -- level 4 (not shared)
       |
    block b -- level 3 (reloc block, shared)
       |
    block c -- level 2 (not shared)
       |
    block d -- level 1 (shared)
       |
    block e -- level 0 (shared)
    
    We go to build a backref tree for block e, we notice block d is shared and add
    it to the list of blocks to lookup it's backrefs for.  Now when we loop around
    we will check edges for the block, so we will see we looked up block c last
    time.  So we lookup block d and then see that the block that points to it is
    block c and we can just skip that edge since we've already been up this path.
    The problem is because we clear need_check when we see block d (as it is shared)
    we never add block b as needing to be checked.  And because block c is in our
    path already we bail out before we walk up to block b and add it to the backref
    check list.
    
    To fix this we need to reset need_check if we trip over a block that doesn't
    need to be checked.  This will make sure that any subsequent blocks in the path
    as we're walking up afterwards are added to the list to be processed.  With this
    patch I can now mount Marc's fs image and it'll complete the balance without
    panicing.  Thanks,
    
    Reported-by: Marc MERLIN <marc@merlins.org>
    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 210fac10fa61fa1851cd940db57ac0b3e82e6f3d
Author: Josef Bacik <jbacik@fb.com>
Date:   Fri Sep 19 10:40:00 2014 -0400

    Btrfs: cleanup error handling in build_backref_tree
    
    commit 75bfb9aff45e44625260f52a5fd581b92ace3e62 upstream.
    
    When balance panics it tends to panic in the
    
    BUG_ON(!upper->checked);
    
    test, because it means it couldn't build the backref tree properly.  This is
    annoying to users and frankly a recoverable error, nothing in this function is
    actually fatal since it is just an in-memory building of the backrefs for a
    given bytenr.  So go through and change all the BUG_ON()'s to ASSERT()'s, and
    fix the BUG_ON(!upper->checked) thing to just return an error.
    
    This patch also fixes the error handling so it tears down the work we've done
    properly.  This code was horribly broken since we always just panic'ed instead
    of actually erroring out, so it needed to be completely re-worked.  With this
    patch my broken image no longer panics when I mount it.  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 f29d743dd1148cc571b546535925e179c33ad61c
Author: Josef Bacik <jbacik@fb.com>
Date:   Thu Sep 18 11:30:44 2014 -0400

    Btrfs: try not to ENOSPC on log replay
    
    commit 1d52c78afbbf80b58299e076a159617d6b42fe3c upstream.
    
    When doing log replay we may have to update inodes, which traditionally goes
    through our delayed inode stuff.  This will try to move space over from the
    trans handle, but we don't reserve space in our trans handle on replay since we
    don't know how much we will need, so instead we try to flush.  But because we
    have a trans handle open we won't flush anything, so if we are out of reserve
    space we will simply return ENOSPC.  Since we know that if an operation made it
    into the log then we definitely had space before the box bought the farm then we
    don't need to worry about doing this space reservation.  Use the
    fs_info->log_root_recovering flag to skip the delayed inode stuff and update the
    item directly.  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 7433c1d96f229e26b8224b6cfead1a7e4486ea53
Author: Josef Bacik <jbacik@fb.com>
Date:   Thu Sep 18 11:27:17 2014 -0400

    Btrfs: don't do async reclaim during log replay
    
    commit f6acfd50110b335c7af636cf1fc8e55319cae5fc upstream.
    
    Trying to reproduce a log enospc bug I hit a panic in the async reclaim code
    during log replay.  This is because we use fs_info->fs_root as our root for
    shrinking and such.  Technically we can use whatever root we want, but let's
    just not allow async reclaim while we're doing log replay.  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 1e1078225d10888e5d279b37a5ce19966e320e1e
Author: Qu Wenruo <quwenruo@cn.fujitsu.com>
Date:   Wed Sep 17 11:53:35 2014 +0800

    btrfs: Fix and enhance merge_extent_mapping() to insert best fitted extent map
    
    commit e6c4efd87ab04e5ead363f24e6ac35ed3506d401 upstream.
    
    The following commit enhanced the merge_extent_mapping() to reduce
    fragment in extent map tree, but it can't handle case which existing
    lies before map_start:
    51f39 btrfs: Use right extent length when inserting overlap extent map.
    
    [BUG]
    When existing extent map's start is before map_start,
    the em->len will be minus, which will corrupt the extent map and fail to
    insert the new extent map.
    This will happen when someone get a large extent map, but when it is
    going to insert it into extent map tree, some one has already commit
    some write and split the huge extent into small parts.
    
    [REPRODUCER]
    It is very easy to tiger using filebench with randomrw personality.
    It is about 100% to reproduce when using 8G preallocated file in 60s
    randonrw test.
    
    [FIX]
    This patch can now handle any existing extent position.
    Since it does not directly use existing->start, now it will find the
    previous and next extent around map_start.
    So the old existing->start < map_start bug will never happen again.
    
    [ENHANCE]
    This patch will insert the best fitted extent map into extent map tree,
    other than the oldest [map_start, map_start + sectorsize) or the
    relatively newer but not perfect [map_start, existing->start).
    
    The patch will first search existing extent that does not intersects with
    the desired map range [map_start, map_start + len).
    The existing extent will be either before or behind map_start, and based
    on the existing extent, we can find out the previous and next extent
    around map_start.
    
    So the best fitted extent would be [prev->end, next->start).
    For prev or next is not found, em->start would be prev->end and em->end
    wold be next->start.
    
    With this patch, the fragment in extent map tree should be reduced much
    more than the 51f39 commit and reduce an unneeded extent map tree search.
    
    Reported-by: Tsutomu Itoh <t-itoh@jp.fujitsu.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 9043fe5bc2833daf5d636fabf259b7be463208a2
Author: Liu Bo <bo.li.liu@oracle.com>
Date:   Tue Sep 16 17:49:30 2014 +0800

    Btrfs: fix up bounds checking in lseek
    
    commit 4d1a40c66bed0b3fa43b9da5fbd5cbe332e4eccf upstream.
    
    An user reported this, it is because that lseek's SEEK_SET/SEEK_CUR/SEEK_END
    allow a negative value for @offset, but btrfs's SEEK_DATA/SEEK_HOLE don't
    prepare for that and convert the negative @offset into unsigned type,
    so we get (end < start) warning.
    
    [ 1269.835374] ------------[ cut here ]------------
    [ 1269.836809] WARNING: CPU: 0 PID: 1241 at fs/btrfs/extent_io.c:430 insert_state+0x11d/0x140()
    [ 1269.838816] BTRFS: end < start 4094 18446744073709551615
    [ 1269.840334] CPU: 0 PID: 1241 Comm: a.out Tainted: G        W      3.16.0+ #306
    [ 1269.858229] Call Trace:
    [ 1269.858612]  [<ffffffff81801a69>] dump_stack+0x4e/0x68
    [ 1269.858952]  [<ffffffff8107894c>] warn_slowpath_common+0x8c/0xc0
    [ 1269.859416]  [<ffffffff81078a36>] warn_slowpath_fmt+0x46/0x50
    [ 1269.859929]  [<ffffffff813b0fbd>] insert_state+0x11d/0x140
    [ 1269.860409]  [<ffffffff813b1396>] __set_extent_bit+0x3b6/0x4e0
    [ 1269.860805]  [<ffffffff813b21c7>] lock_extent_bits+0x87/0x200
    [ 1269.861697]  [<ffffffff813a5b28>] btrfs_file_llseek+0x148/0x2a0
    [ 1269.862168]  [<ffffffff811f201e>] SyS_lseek+0xae/0xc0
    [ 1269.862620]  [<ffffffff8180b212>] system_call_fastpath+0x16/0x1b
    [ 1269.862970] ---[ end trace 4d33ea885832054b ]---
    
    This assumes that btrfs starts finding DATA/HOLE from the beginning of file
    if the assigned @offset is negative.
    
    Also we add alignment for lock_extent_bits 's range.
    
    Reported-by: Toralf Förster <toralf.foerster@gmx.de>
    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 2b5528ba94b362bd61485ebddbc60744f9640dea
Author: Filipe Manana <fdmanana@suse.com>
Date:   Thu Sep 11 11:44:49 2014 +0100

    Btrfs: add missing compression property remove in btrfs_ioctl_setflags
    
    commit 78a017a2c92df9b571db0a55a016280f9019c65e upstream.
    
    The behaviour of a 'chattr -c' consists of getting the current flags,
    clearing the FS_COMPR_FL bit and then sending the result to the set
    flags ioctl - this means the bit FS_NOCOMP_FL isn't set in the flags
    passed to the ioctl. This results in the compression property not being
    cleared from the inode - it was cleared only if the bit FS_NOCOMP_FL
    was set in the received flags.
    
    Reproducer:
    
        $ mkfs.btrfs -f /dev/sdd
        $ mount /dev/sdd /mnt && cd /mnt
        $ mkdir a
        $ chattr +c a
        $ touch a/file
        $ lsattr a/file
        --------c------- a/file
        $ chattr -c a
        $ touch a/file2
        $ lsattr a/file2
        --------c------- a/file2
        $ lsattr -d a
        ---------------- a
    
    Reported-by: Andreas Schneider <asn@cryptomilk.org>
    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 c3caf69f3c53e4bd7da8247717d7b8957825e26b
Author: Qu Wenruo <quwenruo@cn.fujitsu.com>
Date:   Wed Aug 20 16:10:15 2014 +0800

    btrfs: Fix a deadlock in btrfs_dev_replace_finishing()
    
    commit 12b894cb288d57292b01cf158177b6d5c89a6272 upstream.
    
    btrfs-transacion:5657
    [stack snip]
    btrfs_bio_map()
        btrfs_bio_counter_inc_blocked()
            percpu_counter_inc(&fs_info->bio_counter)  ###bio_counter > 0(A)
            __btrfs_bio_map()
                btrfs_dev_replace_lock()
                    mutex_lock(dev_replace->lock)	   ###wait mutex(B)
    
    btrfs:32612
    [stack snip]
    btrfs_dev_replace_start()
        btrfs_dev_replace_lock()
    	mutex_lock(dev_replace->lock)		   ###hold mutex(B)
        btrfs_dev_replace_finishing()
            btrfs_rm_dev_replace_blocked()
                wait until percpu_counter_sum == 0	   ###wait on bio_counter(A)
    
    This bug can be triggered quite easily by the following test script:
    http://pastebin.com/MQmb37Cy
    
    This patch will fix the ABBA problem by calling
    btrfs_dev_replace_unlock() before btrfs_rm_dev_replace_blocked().
    
    The consistency of btrfs devices list and their superblocks is protected
    by device_list_mutex, not btrfs_dev_replace_lock/unlock().
    So it is safe the move btrfs_dev_replace_unlock() before
    btrfs_rm_dev_replace_blocked().
    
    Reported-by: Zhao Lei <zhaolei@cn.fujitsu.com>
    Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
    Cc: Stefan Behrens <sbehrens@giantdisaster.de>
    Signed-off-by: Chris Mason <clm@fb.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fe9133f10ca56e54c5f5075a802bc08e61ad8456
Author: Mark Fasheh <mfasheh@suse.de>
Date:   Mon Aug 18 14:01:17 2014 -0700

    btrfs: don't go readonly on existing qgroup items
    
    commit 0b4699dcb65c2cff793210b07f40b98c2d423a43 upstream.
    
    btrfs_drop_snapshot() leaves subvolume qgroup items on disk after
    completion. This can cause problems with snapshot creation. If a new
    snapshot tries to claim the deleted subvolumes id, btrfs will get -EEXIST
    from add_qgroup_item() and go read-only. The following commands will
    reproduce this problem (assume btrfs is on /dev/sda and is mounted at
    /btrfs)
    
    mkfs.btrfs -f /dev/sda
    mount -t btrfs /dev/sda /btrfs/
    btrfs quota enable /btrfs/
    btrfs su sna /btrfs/ /btrfs/snap
    btrfs su de /btrfs/snap
    sleep 45
    umount /btrfs/
    mount -t btrfs /dev/sda /btrfs/
    
    We can fix this by catching -EEXIST in add_qgroup_item() and
    initializing the existing items. We have the problem of orphaned
    relation items being on disk from an old snapshot but that is outside
    the scope of this patch.
    
    Signed-off-by: Mark Fasheh <mfasheh@suse.de>
    Signed-off-by: Chris Mason <clm@fb.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e207143d7e06270fb224ad4a8e3e07cd333faa26
Author: David Sterba <dsterba@suse.cz>
Date:   Wed Jul 23 14:39:35 2014 +0200

    btrfs: wake up transaction thread from SYNC_FS ioctl
    
    commit 2fad4e83e12591eb3bd213875b9edc2d18e93383 upstream.
    
    The transaction thread may want to do more work, namely it pokes the
    cleaner ktread that will start processing uncleaned subvols.
    
    This can be triggered by user via the 'btrfs fi sync' command, otherwise
    there was a delay up to 30 seconds before the cleaner started to clean
    old snapshots.
    
    Signed-off-by: David Sterba <dsterba@suse.cz>
    Signed-off-by: Chris Mason <clm@fb.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>