commit bdcec2cf3acd0d9ef24c653b722596f49ef6a040
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Thu Mar 26 15:07:23 2015 +0100

    Linux 3.14.37

commit 4f1d1adb44d160ba7c14353689b43ce1a107fba0
Author: Lee Duncan <lduncan@suse.com>
Date:   Mon Jan 5 10:49:44 2015 -0800

    target: Allow Write Exclusive non-reservation holders to READ
    
    commit 1ecc7586922662e3ca2f3f0c3f17fec8749fc621 upstream.
    
    For PGR reservation of type Write Exclusive Access, allow all non
    reservation holding I_T nexuses with active registrations to READ
    from the device.
    
    This addresses a bug where active registrations that attempted
    to READ would result in an reservation conflict.
    
    Signed-off-by: Lee Duncan <lduncan@suse.com>
    Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c3d6b5796b22abf78007bd6bb196d1f95a29ac19
Author: Nicholas Bellinger <nab@linux-iscsi.org>
Date:   Fri Dec 19 00:49:23 2014 +0000

    target: Allow AllRegistrants to re-RESERVE existing reservation
    
    commit ae450e246e8540300699480a3780a420a028b73f upstream.
    
    This patch changes core_scsi3_pro_release() logic to allow an
    existing AllRegistrants type reservation to be re-reserved by
    any registered I_T nexus.
    
    This addresses a issue where AllRegistrants type RESERVE was
    receiving RESERVATION_CONFLICT status if dev_pr_res_holder did
    not match the same I_T nexus, instead of just returning GOOD
    status following spc4r34 Section 5.9.9:
    
    "If the device server receives a PERSISTENT RESERVE OUT command
     with RESERVE service action where the TYPE field and the SCOPE
     field contain the same values as the existing type and scope
     from a persistent reservation holder, it shall not make any
     change to the existing persistent reservation and shall complete
     the command with GOOD status."
    
    Reported-by: Ilias Tsitsimpis <i.tsitsimpis@gmail.com>
    Cc: Ilias Tsitsimpis <i.tsitsimpis@gmail.com>
    Cc: Lee Duncan <lduncan@suse.com>
    Cc: James Bottomley <James.Bottomley@HansenPartnership.com>
    Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit dc366beadc4ef90c86082eb80b6cd772da1f2113
Author: Nicholas Bellinger <nab@linux-iscsi.org>
Date:   Mon Dec 15 11:50:26 2014 -0800

    target: Avoid dropping AllRegistrants reservation during unregister
    
    commit 6c3c9baa0debeb4bcc52a78c4463a0a97518de10 upstream.
    
    This patch fixes an issue with AllRegistrants reservations where
    an unregister operation by the I_T nexus reservation holder would
    incorrectly drop the reservation, instead of waiting until the
    last active I_T nexus is unregistered as per SPC-4.
    
    This includes updating __core_scsi3_complete_pro_release() to reset
    dev->dev_pr_res_holder with another pr_reg for this special case,
    as well as a new 'unreg' parameter to determine when the release
    is occuring from an implicit unregister, vs. explicit RELEASE.
    
    It also adds special handling in core_scsi3_free_pr_reg_from_nacl()
    to release the left-over pr_res_holder, now that pr_reg is deleted
    from pr_reg_list within __core_scsi3_complete_pro_release().
    
    Reported-by: Ilias Tsitsimpis <i.tsitsimpis@gmail.com>
    Cc: James Bottomley <James.Bottomley@HansenPartnership.com>
    Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3b8bcf0a4541ebb0dbac921af866ea6b26b5d753
Author: Nicholas Bellinger <nab@linux-iscsi.org>
Date:   Sun Dec 14 01:47:19 2014 -0800

    target: Fix R_HOLDER bit usage for AllRegistrants
    
    commit d16ca7c5198fd668db10d2c7b048ed3359c12c54 upstream.
    
    This patch fixes the usage of R_HOLDER bit for an All Registrants
    reservation in READ_FULL_STATUS, where only the registration who
    issued RESERVE was being reported as having an active reservation.
    
    It changes core_scsi3_pri_read_full_status() to check ahead of the
    list walk of active registrations to see if All Registrants is active,
    and if so set R_HOLDER bit and scope/type fields for all active
    registrations.
    
    Reported-by: Ilias Tsitsimpis <i.tsitsimpis@gmail.com>
    Cc: James Bottomley <James.Bottomley@HansenPartnership.com>
    Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d5b825cd6eca3e370760d2d7abf34d531552f31d
Author: Nicholas Bellinger <nab@linux-iscsi.org>
Date:   Fri Feb 27 03:54:13 2015 -0800

    target/pscsi: Fix NULL pointer dereference in get_device_type
    
    commit 215a8fe4198f607f34ecdbc9969dae783d8b5a61 upstream.
    
    This patch fixes a NULL pointer dereference OOPs with pSCSI backends
    within target_core_stat.c code.  The bug is caused by a configfs attr
    read if no pscsi_dev_virt->pdv_sd has been configured.
    
    Reported-by: Olaf Hering <olaf@aepfle.de>
    Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bcbd8cdef07b7f452bb795ed80d106609d634431
Author: Nicholas Bellinger <nab@linux-iscsi.org>
Date:   Mon Feb 23 00:57:51 2015 -0800

    iscsi-target: Avoid early conn_logout_comp for iser connections
    
    commit f068fbc82e7696d67b1bb8189306865bedf368b6 upstream.
    
    This patch fixes a iser specific logout bug where early complete()
    of conn->conn_logout_comp in iscsit_close_connection() was causing
    isert_wait4logout() to complete too soon, triggering a use after
    free NULL pointer dereference of iscsi_conn memory.
    
    The complete() was originally added for traditional iscsi-target
    when a ISCSI_LOGOUT_OP failed in iscsi_target_rx_opcode(), but given
    iser-target does not wait in logout failure, this special case needs
    to be avoided.
    
    Reported-by: Sagi Grimberg <sagig@mellanox.com>
    Cc: Sagi Grimberg <sagig@mellanox.com>
    Cc: Slava Shwartsman <valyushash@gmail.com>
    Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6276171b45e2150732a58a5707d9bc0d744927e5
Author: Nicholas Bellinger <nab@linux-iscsi.org>
Date:   Thu Mar 5 03:28:24 2015 +0000

    target: Fix virtual LUN=0 target_configure_device failure OOPs
    
    commit 5f7da044f8bc1cfb21c962edf34bd5699a76e7ae upstream.
    
    This patch fixes a NULL pointer dereference triggered by a late
    target_configure_device() -> alloc_workqueue() failure that results
    in target_free_device() being called with DF_CONFIGURED already set,
    which subsequently OOPses in destroy_workqueue() code.
    
    Currently this only happens at modprobe target_core_mod time when
    core_dev_setup_virtual_lun0() -> target_configure_device() fails,
    and the explicit target_free_device() gets called.
    
    To address this bug originally introduced by commit 0fd97ccf45, go
    ahead and move DF_CONFIGURED to end of target_configure_device()
    code to handle this special failure case.
    
    Reported-by: Claudio Fleiner <cmf@daterainc.com>
    Cc: Claudio Fleiner <cmf@daterainc.com>
    Cc: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e63b72ed8696d24da05d4f9fd9605030ae6597a7
Author: Bart Van Assche <bart.vanassche@sandisk.com>
Date:   Wed Feb 18 15:33:58 2015 +0100

    target: Fix reference leak in target_get_sess_cmd() error path
    
    commit 7544e597343e2166daba3f32e4708533aa53c233 upstream.
    
    This patch fixes a se_cmd->cmd_kref leak buf when se_sess->sess_tearing_down
    is true within target_get_sess_cmd() submission path code.
    
    This se_cmd reference leak can occur during active session shutdown when
    ack_kref=1 is passed by target_submit_cmd_[map_sgls,tmr]() callers.
    
    Signed-off-by: Bart Van Assche <bart.vanassche@sandisk.com>
    Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 774df9928fd150d9d7cc0c1924ece04591cb4652
Author: Ravikumar Kattekola <rk@ti.com>
Date:   Sat Jan 31 22:36:44 2015 +0530

    ARM: dts: DRA7x: Fix the bypass clock source for dpll_iva and others
    
    commit d2192ea09858a8535b056fcede1a41d824e0b3d8 upstream.
    
    Fixes: ee6c750761 (ARM: dts: dra7 clock data)
    
    On DRA7x, For DPLL_IVA, the ref clock(CLKINP) is connected to sys_clk1 and
    the bypass input(CLKINPULOW) is connected to iva_dpll_hs_clk_div clock.
    But the bypass input is not directly routed to bypass clkout instead
    both CLKINP and CLKINPULOW are connected to bypass clkout via a mux.
    
    This mux is controlled by the bit - CM_CLKSEL_DPLL_IVA[23]:DPLL_BYP_CLKSEL
    and it's POR value is zero which selects the CLKINP as bypass clkout.
    which means iva_dpll_hs_clk_div is not the bypass clock for dpll_iva_ck
    
    Fix this by adding another mux clock as parent in bypass mode.
    
    This design is common to most of the PLLs and the rest have only one bypass
    clock. Below is a list of the DPLLs that need this fix:
    
    DPLL_IVA, DPLL_DDR,
    DPLL_DSP, DPLL_EVE,
    DPLL_GMAC, DPLL_PER,
    DPLL_USB and DPLL_CORE
    
    Signed-off-by: Ravikumar Kattekola <rk@ti.com>
    Acked-by: Tero Kristo <t-kristo@ti.com>
    Signed-off-by: Tony Lindgren <tony@atomide.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7176ffe49358668b0db56b2994d072e3329693bc
Author: Alexandre Belloni <alexandre.belloni@free-electrons.com>
Date:   Tue Mar 3 19:58:22 2015 +0100

    ARM: at91: pm: fix at91rm9200 standby
    
    commit 84e871660bebfddb9a62ebd6f19d02536e782f0a upstream.
    
    at91rm9200 standby and suspend to ram has been broken since
    00482a4078f4. It is wrongly using AT91_BASE_SYS which is a physical address
    and actually doesn't correspond to any register on at91rm9200.
    
    Use the correct at91_ramc_base[0] instead.
    
    Fixes: 00482a4078f4 (ARM: at91: implement the standby function for pm/cpuidle)
    
    Signed-off-by: Alexandre Belloni <alexandre.belloni@free-electrons.com>
    Signed-off-by: Nicolas Ferre <nicolas.ferre@atmel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 78b226ff98dcf4f5bd6bb696f3305df19eefdc8f
Author: Suzuki K. Poulose <suzuki.poulose@arm.com>
Date:   Thu Mar 19 18:17:09 2015 +0000

    arm64: Honor __GFP_ZERO in dma allocations
    
    commit 7132813c384515c9dede1ae20e56f3895feb7f1e upstream.
    
    Current implementation doesn't zero out the pages allocated.
    Honor the __GFP_ZERO flag and zero out if set.
    
    Cc: <stable@vger.kernel.org> # v3.14+
    Acked-by: Will Deacon <will.deacon@arm.com>
    Signed-off-by: Suzuki K. Poulose <suzuki.poulose@arm.com>
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2e1a691e057140b6b559e885b2876581dc249489
Author: Eric Dumazet <edumazet@google.com>
Date:   Sun Feb 15 19:03:45 2015 -0800

    netfilter: xt_socket: fix a stack corruption bug
    
    commit 78296c97ca1fd3b104f12e1f1fbc06c46635990b upstream.
    
    As soon as extract_icmp6_fields() returns, its local storage (automatic
    variables) is deallocated and can be overwritten.
    
    Lets add an additional parameter to make sure storage is valid long
    enough.
    
    While we are at it, adds some const qualifiers.
    
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Fixes: b64c9256a9b76 ("tproxy: added IPv6 support to the socket match")
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 17ad69a74cea38b94148cb7449d9a6c682d04444
Author: Pablo Neira Ayuso <pablo@netfilter.org>
Date:   Thu Feb 12 22:15:31 2015 +0100

    netfilter: nft_compat: fix module refcount underflow
    
    commit 520aa7414bb590f39d0d1591b06018e60cbc7cf4 upstream.
    
    Feb 12 18:20:42 nfdev kernel: ------------[ cut here ]------------
    Feb 12 18:20:42 nfdev kernel: WARNING: CPU: 4 PID: 4359 at kernel/module.c:963 module_put+0x9b/0xba()
    Feb 12 18:20:42 nfdev kernel: CPU: 4 PID: 4359 Comm: ebtables-compat Tainted: G        W      3.19.0-rc6+ #43
    [...]
    Feb 12 18:20:42 nfdev kernel: Call Trace:
    Feb 12 18:20:42 nfdev kernel: [<ffffffff815fd911>] dump_stack+0x4c/0x65
    Feb 12 18:20:42 nfdev kernel: [<ffffffff8103e6f7>] warn_slowpath_common+0x9c/0xb6
    Feb 12 18:20:42 nfdev kernel: [<ffffffff8109919f>] ? module_put+0x9b/0xba
    Feb 12 18:20:42 nfdev kernel: [<ffffffff8103e726>] warn_slowpath_null+0x15/0x17
    Feb 12 18:20:42 nfdev kernel: [<ffffffff8109919f>] module_put+0x9b/0xba
    Feb 12 18:20:42 nfdev kernel: [<ffffffff813ecf7c>] nft_match_destroy+0x45/0x4c
    Feb 12 18:20:42 nfdev kernel: [<ffffffff813e683f>] nf_tables_rule_destroy+0x28/0x70
    
    Reported-by: Arturo Borrero Gonzalez <arturo.borrero.glez@gmail.com>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Tested-by: Arturo Borrero Gonzalez <arturo.borrero.glez@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

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

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

commit 26cef841410c707ad5f30398fa423524478ac99c
Author: Julian Anastasov <ja@ssi.bg>
Date:   Sat Feb 21 21:03:10 2015 +0200

    ipvs: add missing ip_vs_pe_put in sync code
    
    commit 528c943f3bb919aef75ab2fff4f00176f09a4019 upstream.
    
    ip_vs_conn_fill_param_sync() gets in param.pe a module
    reference for persistence engine from __ip_vs_pe_getbyname()
    but forgets to put it. Problem occurs in backup for
    sync protocol v1 (2.6.39).
    
    Also, pe_data usually comes in sync messages for
    connection templates and ip_vs_conn_new() copies
    the pointer only in this case. Make sure pe_data
    is not leaked if it comes unexpectedly for normal
    connections. Leak can happen only if bogus messages
    are sent to backup server.
    
    Fixes: fe5e7a1efb66 ("IPVS: Backup, Adding Version 1 receive capability")
    Signed-off-by: Julian Anastasov <ja@ssi.bg>
    Signed-off-by: Simon Horman <horms@verge.net.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit df33f2aeb8963f303f72e891344fde5a7608c3dc
Author: Jiri Slaby <jslaby@suse.cz>
Date:   Thu Mar 5 09:13:31 2015 +0100

    x86/vdso: Fix the build on GCC5
    
    commit e893286918d2cde3a94850d8f7101cd1039e0c62 upstream.
    
    On gcc5 the kernel does not link:
    
      ld: .eh_frame_hdr table[4] FDE at 0000000000000648 overlaps table[5] FDE at 0000000000000670.
    
    Because prior GCC versions always emitted NOPs on ALIGN directives, but
    gcc5 started omitting them.
    
    .LSTARTFDEDLSI1 says:
    
            /* HACK: The dwarf2 unwind routines will subtract 1 from the
               return address to get an address in the middle of the
               presumed call instruction.  Since we didn't get here via
               a call, we need to include the nop before the real start
               to make up for it.  */
            .long .LSTART_sigreturn-1-.     /* PC-relative start address */
    
    But commit 69d0627a7f6e ("x86 vDSO: reorder vdso32 code") from 2.6.25
    replaced .org __kernel_vsyscall+32,0x90 by ALIGN right before
    __kernel_sigreturn.
    
    Of course, ALIGN need not generate any NOP in there. Esp. gcc5 collapses
    vclock_gettime.o and int80.o together with no generated NOPs as "ALIGN".
    
    So fix this by adding to that point at least a single NOP and make the
    function ALIGN possibly with more NOPs then.
    
    Kudos for reporting and diagnosing should go to Richard.
    
    Reported-by: Richard Biener <rguenther@suse.de>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>
    Acked-by: Andy Lutomirski <luto@amacapital.net>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Link: http://lkml.kernel.org/r/1425543211-12542-1-git-send-email-jslaby@suse.cz
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c16957b5ab6c6bc9767f4843cd4729b63d566703
Author: Oleg Nesterov <oleg@redhat.com>
Date:   Fri Mar 13 09:53:10 2015 +0100

    x86/fpu: Drop_fpu() should not assume that tsk equals current
    
    commit f4c3686386393c120710dd34df2a74183ab805fd upstream.
    
    drop_fpu() does clear_used_math() and usually this is correct
    because tsk == current.
    
    However switch_fpu_finish()->restore_fpu_checking() is called before
    __switch_to() updates the "current_task" variable. If it fails,
    we will wrongly clear the PF_USED_MATH flag of the previous task.
    
    So use clear_stopped_child_used_math() instead.
    
    Signed-off-by: Oleg Nesterov <oleg@redhat.com>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Reviewed-by: Rik van Riel <riel@redhat.com>
    Cc: Andy Lutomirski <luto@amacapital.net>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Dave Hansen <dave.hansen@intel.com>
    Cc: Fenghua Yu <fenghua.yu@intel.com>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Pekka Riikonen <priikone@iki.fi>
    Cc: Quentin Casasnovas <quentin.casasnovas@oracle.com>
    Cc: Suresh Siddha <sbsiddha@gmail.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Link: http://lkml.kernel.org/r/20150309171041.GB11388@redhat.com
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f8ba940346cbd61047effdbe89cd0e13aec18b68
Author: Oleg Nesterov <oleg@redhat.com>
Date:   Fri Mar 13 09:53:09 2015 +0100

    x86/fpu: Avoid math_state_restore() without used_math() in __restore_xstate_sig()
    
    commit a7c80ebcac3068b1c3cb27d538d29558c30010c8 upstream.
    
    math_state_restore() assumes it is called with irqs disabled,
    but this is not true if the caller is __restore_xstate_sig().
    
    This means that if ia32_fxstate == T and __copy_from_user()
    fails, __restore_xstate_sig() returns with irqs disabled too.
    
    This triggers:
    
      BUG: sleeping function called from invalid context at kernel/locking/rwsem.c:41
       dump_stack
       ___might_sleep
       ? _raw_spin_unlock_irqrestore
       __might_sleep
       down_read
       ? _raw_spin_unlock_irqrestore
       print_vma_addr
       signal_fault
       sys32_rt_sigreturn
    
    Change __restore_xstate_sig() to call set_used_math()
    unconditionally. This avoids enabling and disabling interrupts
    in math_state_restore(). If copy_from_user() fails, we can
    simply do fpu_finit() by hand.
    
    [ Note: this is only the first step. math_state_restore() should
            not check used_math(), it should set this flag. While
    	init_fpu() should simply die. ]
    
    Signed-off-by: Oleg Nesterov <oleg@redhat.com>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Cc: Andy Lutomirski <luto@amacapital.net>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Dave Hansen <dave.hansen@intel.com>
    Cc: Fenghua Yu <fenghua.yu@intel.com>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Pekka Riikonen <priikone@iki.fi>
    Cc: Quentin Casasnovas <quentin.casasnovas@oracle.com>
    Cc: Rik van Riel <riel@redhat.com>
    Cc: Suresh Siddha <sbsiddha@gmail.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Link: http://lkml.kernel.org/r/20150307153844.GB25954@redhat.com
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e9b15363c10104a0823e5e2d360eab188f2b122f
Author: Stephan Mueller <smueller@chronox.de>
Date:   Thu Mar 12 09:17:51 2015 +0100

    crypto: aesni - fix memory usage in GCM decryption
    
    commit ccfe8c3f7e52ae83155cb038753f4c75b774ca8a upstream.
    
    The kernel crypto API logic requires the caller to provide the
    length of (ciphertext || authentication tag) as cryptlen for the
    AEAD decryption operation. Thus, the cipher implementation must
    calculate the size of the plaintext output itself and cannot simply use
    cryptlen.
    
    The RFC4106 GCM decryption operation tries to overwrite cryptlen memory
    in req->dst. As the destination buffer for decryption only needs to hold
    the plaintext memory but cryptlen references the input buffer holding
    (ciphertext || authentication tag), the assumption of the destination
    buffer length in RFC4106 GCM operation leads to a too large size. This
    patch simply uses the already calculated plaintext size.
    
    In addition, this patch fixes the offset calculation of the AAD buffer
    pointer: as mentioned before, cryptlen already includes the size of the
    tag. Thus, the tag does not need to be added. With the addition, the AAD
    will be written beyond the already allocated buffer.
    
    Note, this fixes a kernel crash that can be triggered from user space
    via AF_ALG(aead) -- simply use the libkcapi test application
    from [1] and update it to use rfc4106-gcm-aes.
    
    Using [1], the changes were tested using CAVS vectors to demonstrate
    that the crypto operation still delivers the right results.
    
    [1] http://www.chronox.de/libkcapi.html
    
    CC: Tadeusz Struk <tadeusz.struk@intel.com>
    Signed-off-by: Stephan Mueller <smueller@chronox.de>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit aa4d0590720f8ddbdff8946ae526b052fecb3f0a
Author: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Date:   Thu Feb 26 07:22:05 2015 +0000

    crypto: arm/aes update NEON AES module to latest OpenSSL version
    
    commit 001eabfd54c0cbf9d7d16264ddc8cc0bee67e3ed upstream.
    
    This updates the bit sliced AES module to the latest version in the
    upstream OpenSSL repository (e620e5ae37bc). This is needed to fix a
    bug in the XTS decryption path, where data chunked in a certain way
    could trigger the ciphertext stealing code, which is not supposed to
    be active in the kernel build (The kernel implementation of XTS only
    supports round multiples of the AES block size of 16 bytes, whereas
    the conformant OpenSSL implementation of XTS supports inputs of
    arbitrary size by applying ciphertext stealing). This is fixed in
    the upstream version by adding the missing #ifndef XTS_CHAIN_TWEAK
    around the offending instructions.
    
    The upstream code also contains the change applied by Russell to
    build the code unconditionally, i.e., even if __LINUX_ARM_ARCH__ < 7,
    but implemented slightly differently.
    
    Fixes: e4e7f10bfc40 ("ARM: add support for bit sliced AES using NEON instructions")
    Reported-by: Adrian Kotelba <adrian.kotelba@gmail.com>
    Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    Tested-by: Milan Broz <gmazyland@gmail.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

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

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

commit bb4ed9fd150772a0eb19c7db0ab2952127f8cab0
Author: James Bottomley <JBottomley@Parallels.com>
Date:   Wed Mar 4 16:18:33 2015 -0800

    libsas: Fix Kernel Crash in smp_execute_task
    
    commit 6302ce4d80aa82b3fdb5c5cd68e7268037091b47 upstream.
    
    This crash was reported:
    
    [  366.947370] sd 3:0:1:0: [sdb] Spinning up disk....
    [  368.804046] BUG: unable to handle kernel NULL pointer dereference at           (null)
    [  368.804072] IP: [<ffffffff81358457>] __mutex_lock_common.isra.7+0x9c/0x15b
    [  368.804098] PGD 0
    [  368.804114] Oops: 0002 [#1] SMP
    [  368.804143] CPU 1
    [  368.804151] Modules linked in: sg netconsole s3g(PO) uinput joydev hid_multitouch usbhid hid snd_hda_codec_via cpufreq_userspace cpufreq_powersave cpufreq_stats uhci_hcd cpufreq_conservative snd_hda_intel snd_hda_codec snd_hwdep snd_pcm sdhci_pci snd_page_alloc sdhci snd_timer snd psmouse evdev serio_raw pcspkr soundcore xhci_hcd shpchp s3g_drm(O) mvsas mmc_core ahci libahci drm i2c_core acpi_cpufreq mperf video processor button thermal_sys dm_dmirror exfat_fs exfat_core dm_zcache dm_mod padlock_aes aes_generic padlock_sha iscsi_target_mod target_core_mod configfs sswipe libsas libata scsi_transport_sas picdev via_cputemp hwmon_vid fuse parport_pc ppdev lp parport autofs4 ext4 crc16 mbcache jbd2 sd_mod crc_t10dif usb_storage scsi_mod ehci_hcd usbcore usb_common
    [  368.804749]
    [  368.804764] Pid: 392, comm: kworker/u:3 Tainted: P        W  O 3.4.87-logicube-ng.22 #1 To be filled by O.E.M. To be filled by O.E.M./EPIA-M920
    [  368.804802] RIP: 0010:[<ffffffff81358457>]  [<ffffffff81358457>] __mutex_lock_common.isra.7+0x9c/0x15b
    [  368.804827] RSP: 0018:ffff880117001cc0  EFLAGS: 00010246
    [  368.804842] RAX: 0000000000000000 RBX: ffff8801185030d0 RCX: ffff88008edcb420
    [  368.804857] RDX: 0000000000000000 RSI: 0000000000000002 RDI: ffff8801185030d4
    [  368.804873] RBP: ffff8801181531c0 R08: 0000000000000020 R09: 00000000fffffffe
    [  368.804885] R10: 0000000000000000 R11: 0000000000000000 R12: ffff8801185030d4
    [  368.804899] R13: 0000000000000002 R14: ffff880117001fd8 R15: ffff8801185030d8
    [  368.804916] FS:  0000000000000000(0000) GS:ffff88011fc80000(0000) knlGS:0000000000000000
    [  368.804931] CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b
    [  368.804946] CR2: 0000000000000000 CR3: 000000000160b000 CR4: 00000000000006e0
    [  368.804962] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    [  368.804978] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
    [  368.804995] Process kworker/u:3 (pid: 392, threadinfo ffff880117000000, task ffff8801181531c0)
    [  368.805009] Stack:
    [  368.805017]  ffff8801185030d8 0000000000000000 ffffffff8161ddf0 ffffffff81056f7c
    [  368.805062]  000000000000b503 ffff8801185030d0 ffff880118503000 0000000000000000
    [  368.805100]  ffff8801185030d0 ffff8801188b8000 ffff88008edcb420 ffffffff813583ac
    [  368.805135] Call Trace:
    [  368.805153]  [<ffffffff81056f7c>] ? up+0xb/0x33
    [  368.805168]  [<ffffffff813583ac>] ? mutex_lock+0x16/0x25
    [  368.805194]  [<ffffffffa018c414>] ? smp_execute_task+0x4e/0x222 [libsas]
    [  368.805217]  [<ffffffffa018ce1c>] ? sas_find_bcast_dev+0x3c/0x15d [libsas]
    [  368.805240]  [<ffffffffa018ce4f>] ? sas_find_bcast_dev+0x6f/0x15d [libsas]
    [  368.805264]  [<ffffffffa018e989>] ? sas_ex_revalidate_domain+0x37/0x2ec [libsas]
    [  368.805280]  [<ffffffff81355a2a>] ? printk+0x43/0x48
    [  368.805296]  [<ffffffff81359a65>] ? _raw_spin_unlock_irqrestore+0xc/0xd
    [  368.805318]  [<ffffffffa018b767>] ? sas_revalidate_domain+0x85/0xb6 [libsas]
    [  368.805336]  [<ffffffff8104e5d9>] ? process_one_work+0x151/0x27c
    [  368.805351]  [<ffffffff8104f6cd>] ? worker_thread+0xbb/0x152
    [  368.805366]  [<ffffffff8104f612>] ? manage_workers.isra.29+0x163/0x163
    [  368.805382]  [<ffffffff81052c4e>] ? kthread+0x79/0x81
    [  368.805399]  [<ffffffff8135fea4>] ? kernel_thread_helper+0x4/0x10
    [  368.805416]  [<ffffffff81052bd5>] ? kthread_flush_work_fn+0x9/0x9
    [  368.805431]  [<ffffffff8135fea0>] ? gs_change+0x13/0x13
    [  368.805442] Code: 83 7d 30 63 7e 04 f3 90 eb ab 4c 8d 63 04 4c 8d 7b 08 4c 89 e7 e8 fa 15 00 00 48 8b 43 10 4c 89 3c 24 48 89 63 10 48 89 44 24 08 <48> 89 20 83 c8 ff 48 89 6c 24 10 87 03 ff c8 74 35 4d 89 ee 41
    [  368.805851] RIP  [<ffffffff81358457>] __mutex_lock_common.isra.7+0x9c/0x15b
    [  368.805877]  RSP <ffff880117001cc0>
    [  368.805886] CR2: 0000000000000000
    [  368.805899] ---[ end trace b720682065d8f4cc ]---
    
    It's directly caused by 89d3cf6 [SCSI] libsas: add mutex for SMP task
    execution, but shows a deeper cause: expander functions expect to be able to
    cast to and treat domain devices as expanders.  The correct fix is to only do
    expander discover when we know we've got an expander device to avoid wrongly
    casting a non-expander device.
    
    Reported-by: Praveen Murali <pmurali@logicube.com>
    Tested-by: Praveen Murali <pmurali@logicube.com>
    Signed-off-by: James Bottomley <JBottomley@Parallels.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9cb8c24e612f1724fa85872205a1dfae7603d874
Author: Jan Beulich <JBeulich@suse.com>
Date:   Wed Mar 11 13:51:17 2015 +0000

    xen-pciback: limit guest control of command register
    
    commit af6fc858a35b90e89ea7a7ee58e66628c55c776b upstream.
    
    Otherwise the guest can abuse that control to cause e.g. PCIe
    Unsupported Request responses by disabling memory and/or I/O decoding
    and subsequently causing (CPU side) accesses to the respective address
    ranges, which (depending on system configuration) may be fatal to the
    host.
    
    Note that to alter any of the bits collected together as
    PCI_COMMAND_GUEST permissive mode is now required to be enabled
    globally or on the specific device.
    
    This is CVE-2015-2150 / XSA-120.
    
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
    Signed-off-by: David Vrabel <david.vrabel@citrix.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a5b8311fe0adc3d83b353c8e13899ea71bc51723
Author: Juergen Gross <jgross@suse.com>
Date:   Thu Feb 26 06:52:05 2015 +0100

    xen/events: avoid NULL pointer dereference in dom0 on large machines
    
    commit 85e40b0539b24518c8bdf63e2605c8522377d00f upstream.
    
    Using the pvops kernel a NULL pointer dereference was detected on a
    large machine (144 processors) when booting as dom0 in
    evtchn_fifo_unmask() during assignment of a pirq.
    
    The event channel in question was the first to need a new entry in
    event_array[] in events_fifo.c. Unfortunately xen_irq_info_pirq_setup()
    is called with evtchn being 0 for a new pirq and the real event channel
    number is assigned to the pirq only during __startup_pirq().
    
    It is mandatory to call xen_evtchn_port_setup() after assigning the
    event channel number to the pirq to make sure all memory needed for the
    event channel is allocated.
    
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Signed-off-by: David Vrabel <david.vrabel@citrix.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 472cd1f6c9bfb48d5bab283dbf123837dd4e2cbb
Author: Thomas Hellstrom <thellstrom@vmware.com>
Date:   Thu Mar 5 02:33:24 2015 -0800

    drm/vmwgfx: Reorder device takedown somewhat
    
    commit 3458390b9f0ba784481d23134798faee27b5f16f upstream.
    
    To take down the MOB and GMR memory types, the driver may have to issue
    fence objects and thus make sure that the fence manager is taken down
    after those memory types.
    Reorder device init accordingly.
    
    Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
    Reviewed-by: Sinclair Yeh <syeh@vmware.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

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

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

commit 32b783339fd88aaef35840d2695ce430680db807
Author: Doug Anderson <dianders@chromium.org>
Date:   Tue Mar 3 15:20:47 2015 -0800

    regulator: core: Fix enable GPIO reference counting
    
    commit 29d62ec5f87fbeec8413e2215ddad12e7f972e4c upstream.
    
    Normally _regulator_do_enable() isn't called on an already-enabled
    rdev.  That's because the main caller, _regulator_enable() always
    calls _regulator_is_enabled() and only calls _regulator_do_enable() if
    the rdev was not already enabled.
    
    However, there is one caller of _regulator_do_enable() that doesn't
    check: regulator_suspend_finish().  While we might want to make
    regulator_suspend_finish() behave more like _regulator_enable(), it's
    probably also a good idea to make _regulator_do_enable() robust if it
    is called on an already enabled rdev.
    
    At the moment, _regulator_do_enable() is _not_ robust for already
    enabled rdevs if we're using an ena_pin.  Each time
    _regulator_do_enable() is called for an rdev using an ena_pin the
    reference count of the ena_pin is incremented even if the rdev was
    already enabled.  This is not as intended because the ena_pin is for
    something else: for keeping track of how many active rdevs there are
    sharing the same ena_pin.
    
    Here's how the reference counting works here:
    
    * Each time _regulator_enable() is called we increment
      rdev->use_count, so _regulator_enable() calls need to be balanced
      with _regulator_disable() calls.
    
    * There is no explicit reference counting in _regulator_do_enable()
      which is normally just a warapper around rdev->desc->ops->enable()
      with code for supporting delays.  It's not expected that the
      "ops->enable()" call do reference counting.
    
    * Since regulator_ena_gpio_ctrl() does have reference counting
      (handling the sharing of the pin amongst multiple rdevs), we
      shouldn't call it if the current rdev is already enabled.
    
    Note that as part of this we cleanup (remove) the initting of
    ena_gpio_state in regulator_register().  In _regulator_do_enable(),
    _regulator_do_disable() and _regulator_is_enabled() is is clear that
    ena_gpio_state should be the state of whether this particular rdev has
    requested the GPIO be enabled.  regulator_register() was initting it
    as the actual state of the pin.
    
    Fixes: 967cfb18c0e3 ("regulator: core: manage enable GPIO list")
    Signed-off-by: Doug Anderson <dianders@chromium.org>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6939dad78726fbe2f6dd5f66d08e0ab1d2002e03
Author: Javier Martinez Canillas <javier.martinez@collabora.co.uk>
Date:   Mon Mar 2 21:40:39 2015 +0100

    regulator: Only enable disabled regulators on resume
    
    commit 0548bf4f5ad6fc3bd93c4940fa48078b34609682 upstream.
    
    The _regulator_do_enable() call ought to be a no-op when called on an
    already-enabled regulator.  However, as an optimization
    _regulator_enable() doesn't call _regulator_do_enable() on an already
    enabled regulator.  That means we never test the case of calling
    _regulator_do_enable() during normal usage and there may be hidden
    bugs or warnings.  We have seen warnings issued by the tps65090 driver
    and bugs when using the GPIO enable pin.
    
    Let's match the same optimization that _regulator_enable() in
    regulator_suspend_finish().  That may speed up suspend/resume and also
    avoids exposing hidden bugs.
    
    [Use much clearer commit message from Doug Anderson]
    
    Signed-off-by: Javier Martinez Canillas <javier.martinez@collabora.co.uk>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5c7a4c4def1e14ff083966ef7ffec6d2ee3bace1
Author: Brian King <brking@linux.vnet.ibm.com>
Date:   Wed Mar 4 08:09:44 2015 -0600

    bnx2x: Force fundamental reset for EEH recovery
    
    commit da293700568ed3d96fcf062ac15d7d7c41377f11 upstream.
    
    EEH recovery for bnx2x based adapters is not reliable on all Power
    systems using the default hot reset, which can result in an
    unrecoverable EEH error. Forcing the use of fundamental reset
    during EEH recovery fixes this.
    
    Signed-off-by: Brian King <brking@linux.vnet.ibm.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a9395cba088ceb0328892bca1fd18b45ebc3bb22
Author: Maxime Ripard <maxime.ripard@free-electrons.com>
Date:   Wed Feb 18 11:32:07 2015 +0100

    mtd: nand: pxa3xx: Fix PIO FIFO draining
    
    commit 8dad0386b97c4bd6edd56752ca7f2e735fe5beb4 upstream.
    
    The NDDB register holds the data that are needed by the read and write
    commands.
    
    However, during a read PIO access, the datasheet specifies that after each 32
    bytes read in that register, when BCH is enabled, we have to make sure that the
    RDDREQ bit is set in the NDSR register.
    
    This fixes an issue that was seen on the Armada 385, and presumably other mvebu
    SoCs, when a read on a newly erased page would end up in the driver reporting a
    timeout from the NAND.
    
    Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
    Reviewed-by: Boris Brezillon <boris.brezillon@free-electrons.com>
    Acked-by: Ezequiel Garcia <ezequiel.garcia@free-electrons.com>
    Signed-off-by: Brian Norris <computersforpeace@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9e580aea6979631799cdaa94ff1d67856ccfce90
Author: Takashi Iwai <tiwai@suse.de>
Date:   Mon Mar 16 10:18:08 2015 +0100

    ALSA: hda - Treat stereo-to-mono mix properly
    
    commit cc261738add93947d138d2fabad9f4dbed4e5c00 upstream.
    
    The commit [ef403edb7558: ALSA: hda - Don't access stereo amps for
    mono channel widgets] fixed the handling of mono widgets in general,
    but it still misses an exceptional case: namely, a mono mixer widget
    taking a single stereo input.  In this case, it has stereo volumes
    although it's a mono widget, and thus we have to take care of both
    left and right input channels, as stated in HD-audio spec ("7.1.3
    Widget Interconnection Rules").
    
    This patch covers this missing piece by adding proper checks of stereo
    amps in both the generic parser and the proc output codes.
    
    Reported-by: Raymond Yau <superquad.vortex2@gmail.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b62e3b444198b20d3b0eef7a06779a48231fe12b
Author: Takashi Iwai <tiwai@suse.de>
Date:   Sun Mar 8 18:29:50 2015 +0100

    ALSA: hda - Fix regression of HD-audio controller fallback modes
    
    commit a1f3f1ca66bd12c339b17a0c2ef93a093f90a277 upstream.
    
    The commit [63e51fd708f5: ALSA: hda - Don't take unresponsive D3
    transition too serious] introduced a conditional fallback behavior to
    the HD-audio controller depending on the flag set.  However, it
    introduced a silly bug, too, that the flag was evaluated in a reverse
    way.  This resulted in a regression of HD-audio controller driver
    where it can't go to the fallback mode at communication errors.
    
    Unfortunately (or fortunately?) this didn't come up until recently
    because the affected code path is an error handling that happens only
    on an unstable hardware chip.  Most of recent chips work stably, thus
    they didn't hit this problem.  Now, we've got a regression report with
    a VIA chip, and this seems indeed requiring the fallback to the
    polling mode, and finally the bug was revealed.
    
    The fix is a oneliner to remove the wrong logical NOT in the check.
    (Lesson learned - be careful about double negation.)
    
    The bug should be backported to stable, but the patch won't be
    applicable to 3.13 or earlier because of the code splits.  The stable
    fix patches for earlier kernels will be posted later manually.
    
    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=94021
    Fixes: 63e51fd708f5 ('ALSA: hda - Don't take unresponsive D3 transition too serious')
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit dc83efb092af95df9b4cdc460fc63f3144bfb0f6
Author: Takashi Iwai <tiwai@suse.de>
Date:   Thu Mar 12 20:47:15 2015 +0100

    ALSA: hda - Add workaround for MacBook Air 5,2 built-in mic
    
    commit 2ddee91abe9cc34ddb6294ee14702b46ae07d460 upstream.
    
    MacBook Air 5,2 has the same problem as MacBook Pro 8,1 where the
    built-in mic records only the right channel.  Apply the same
    workaround as MBP8,1 to spread the mono channel via a Cirrus codec
    vendor-specific COEF setup.
    
    Reported-and-tested-by: Vasil Zlatanov <vasil.zlatanov@gmail.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ff5af001ff1539e762f0d5d054ca476376f3fa69
Author: Takashi Iwai <tiwai@suse.de>
Date:   Thu Mar 12 20:28:04 2015 +0100

    ALSA: hda - Set single_adc_amp flag for CS420x codecs
    
    commit bad994f5b4ab57eec8d56c180edca00505c3eeb2 upstream.
    
    CS420x codecs seem to deal only the single amps of ADC nodes even
    though the nodes receive multiple inputs.  This leads to the
    inconsistent amp value after S3/S4 resume, for example.
    
    The fix is just to set codec->single_adc_amp flag.  Then the driver
    handles these ADC amps as if single connections.
    
    Reported-and-tested-by: Vasil Zlatanov <vasil.zlatanov@gmail.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 69699bb5779e3c2a0dc0ad36466eb86f277afdfc
Author: Takashi Iwai <tiwai@suse.de>
Date:   Thu Mar 12 08:30:11 2015 +0100

    ALSA: hda - Don't access stereo amps for mono channel widgets
    
    commit ef403edb75580a3ec5d155f5de82155f0419c621 upstream.
    
    The current HDA generic parser initializes / modifies the amp values
    always in stereo, but this seems causing the problem on ALC3229 codec
    that has a few mono channel widgets: namely, these mono widgets react
    to actions for both channels equally.
    
    In the driver code, we do care the mono channel and create a control
    only for the left channel (as defined in HD-audio spec) for such a
    node.  When the control is updated, only the left channel value is
    changed.  However, in the resume, the right channel value is also
    restored from the initial value we took as stereo, and this overwrites
    the left channel value.  This ends up being the silent output as the
    right channel has been never touched and remains muted.
    
    This patch covers the places where unconditional stereo amp accesses
    are done and converts to the conditional accesses.
    
    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=94581
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bdd7878b488078678dc7a04ca3b784f6992c6490
Author: Takashi Iwai <tiwai@suse.de>
Date:   Wed Mar 11 16:05:19 2015 +0100

    ALSA: hda - Fix built-in mic on Compaq Presario CQ60
    
    commit ddb6ca75b5671b8fbf1909bc588c449ee74b34f9 upstream.
    
    Compaq Presario CQ60 laptop with CX20561 gives a wrong pin for the
    built-in mic NID 0x17 instead of NID 0x1d, and it results in the
    non-working mic.  This patch just remaps the pin correctly via fixup.
    
    Bugzilla: https://bugzilla.opensuse.org/show_bug.cgi?id=920604
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 321f094062e1d3e9f8215078d565f3e3d019d042
Author: Takashi Iwai <tiwai@suse.de>
Date:   Wed Mar 11 18:12:49 2015 +0100

    ALSA: control: Add sanity checks for user ctl id name string
    
    commit be3bb8236db2d0fcd705062ae2e2a9d75131222f upstream.
    
    There was no check about the id string of user control elements, so we
    accepted even a control element with an empty string, which is
    obviously bogus.  This patch adds more sanity checks of id strings.
    
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit eb3deba1b8edfcf985e6c30b082c502c75b894e7
Author: Daniel Mack <daniel@zonque.org>
Date:   Thu Mar 12 09:41:32 2015 +0100

    ALSA: snd-usb: add quirks for Roland UA-22
    
    commit fcdcd1dec6d2c7b718385ec743ae5a9a233edad4 upstream.
    
    The device complies to the UAC1 standard but hides that fact with
    proprietary descriptors. The autodetect quirk for Roland devices
    catches the audio interface but misses the MIDI part, so a specific
    quirk is needed.
    
    Signed-off-by: Daniel Mack <daniel@zonque.org>
    Reported-by: Rafa Lafuente <rafalafuente@gmail.com>
    Tested-by: Raphaël Doursenaud <raphael@doursenaud.fr>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e62c360b26b8f8bb2e88db4cfc95fa10d3503cd6
Author: Alexander Sverdlin <alexander.sverdlin@nokia.com>
Date:   Fri Feb 27 16:30:21 2015 +0100

    spi: pl022: Fix race in giveback() leading to driver lock-up
    
    commit cd6fa8d2ca53cac3226fdcffcf763be390abae32 upstream.
    
    Commit fd316941c ("spi/pl022: disable port when unused") introduced a race,
    which leads to possible driver lock up (easily reproducible on SMP).
    
    The problem happens in giveback() function where the completion of the transfer
    is signalled to SPI subsystem and then the HW SPI controller is disabled. Another
    transfer might be setup in between, which brings driver in locked-up state.
    
    Exact event sequence on SMP:
    
    core0                                   core1
    
                                            => pump_transfers()
                                            /* message->state == STATE_DONE */
                                              => giveback()
                                                => spi_finalize_current_message()
    
    => pl022_unprepare_transfer_hardware()
    => pl022_transfer_one_message
      => flush()
      => do_interrupt_dma_transfer()
        => set_up_next_transfer()
        /* Enable SSP, turn on interrupts */
        writew((readw(SSP_CR1(pl022->virtbase)) |
               SSP_CR1_MASK_SSE), SSP_CR1(pl022->virtbase));
    
    ...
    
    => pl022_interrupt_handler()
      => readwriter()
    
                                            /* disable the SPI/SSP operation */
                                            => writew((readw(SSP_CR1(pl022->virtbase)) &
                                                      (~SSP_CR1_MASK_SSE)), SSP_CR1(pl022->virtbase));
    
    Lockup! SPI controller is disabled and the data will never be received. Whole
    SPI subsystem is waiting for transfer ACK and blocked.
    
    So, only signal transfer completion after disabling the controller.
    
    Fixes: fd316941c (spi/pl022: disable port when unused)
    Signed-off-by: Alexander Sverdlin <alexander.sverdlin@nokia.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ddae55303da59a56c05ec39c1a4789775f591363
Author: Torsten Fleischer <torfl6749@gmail.com>
Date:   Tue Feb 24 16:32:57 2015 +0100

    spi: atmel: Fix interrupt setup for PDC transfers
    
    commit 76e1d14b316d6f501ebc001e7a5d86b24ce5b615 upstream.
    
    Additionally to the current DMA transfer the PDC allows to set up a next DMA
    transfer. This is useful for larger SPI transfers.
    
    The driver currently waits for ENDRX as end of the transfer. But ENDRX is set
    when the current DMA transfer is done (RCR = 0), i.e. it doesn't include the
    next DMA transfer.
    Thus a subsequent SPI transfer could be started although there is currently a
    transfer in progress. This can cause invalid accesses to the SPI slave devices
    and to SPI transfer errors.
    
    This issue has been observed on a hardware with a M25P128 SPI NOR flash.
    
    So instead of ENDRX we should wait for RXBUFF. This flag is set if there is
    no more DMA transfer in progress (RCR = RNCR = 0).
    
    Signed-off-by: Torsten Fleischer <torfl6749@gmail.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f49920b9a288d5ddfc7e50d44d380ac4f60862bf
Author: jmlatten@linux.vnet.ibm.com <jmlatten@linux.vnet.ibm.com>
Date:   Fri Feb 20 18:11:24 2015 -0600

    tpm/ibmvtpm: Additional LE support for tpm_ibmvtpm_send
    
    commit 62dfd912ab3b5405b6fe72d0135c37e9648071f1 upstream.
    
    Problem: When IMA and VTPM are both enabled in kernel config,
    kernel hangs during bootup on LE OS.
    
    Why?: IMA calls tpm_pcr_read() which results in tpm_ibmvtpm_send
    and tpm_ibmtpm_recv getting called. A trace showed that
    tpm_ibmtpm_recv was hanging.
    
    Resolution: tpm_ibmtpm_recv was hanging because tpm_ibmvtpm_send
    was sending CRQ message that probably did not make much sense
    to phype because of Endianness. The fix below sends correctly
    converted CRQ for LE. This was not caught before because it
    seems IMA is not enabled by default in kernel config and
    IMA exercises this particular code path in vtpm.
    
    Tested with IMA and VTPM enabled in kernel config and VTPM
    enabled on both a BE OS and a LE OS ppc64 lpar. This exercised
    CRQ and TPM command code paths in vtpm.
    Patch is against Peter's tpmdd tree on github which included
    Vicky's previous vtpm le patches.
    
    Signed-off-by: Joy Latten <jmlatten@linux.vnet.ibm.com>
    Reviewed-by: Ashley Lai <ashley@ahsleylai.com>
    Signed-off-by: Peter Huewe <peterhuewe@gmx.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0588215aed7f4a280ef87f87eca0862222cc0b7b
Author: Jason Low <jason.low2@hp.com>
Date:   Fri Feb 13 11:58:07 2015 +0800

    cpuset: Fix cpuset sched_relax_domain_level
    
    commit 283cb41f426b723a0255702b761b0fc5d1b53a81 upstream.
    
    The cpuset.sched_relax_domain_level can control how far we do
    immediate load balancing on a system. However, it was found on recent
    kernels that echo'ing a value into cpuset.sched_relax_domain_level
    did not reduce any immediate load balancing.
    
    The reason this occurred was because the update_domain_attr_tree() traversal
    did not update for the "top_cpuset". This resulted in nothing being changed
    when modifying the sched_relax_domain_level parameter.
    
    This patch is able to address that problem by having update_domain_attr_tree()
    allow updates for the root in the cpuset traversal.
    
    Fixes: fc560a26acce ("cpuset: replace cpuset->stack_list with cpuset_for_each_descendant_pre()")
    Signed-off-by: Jason Low <jason.low2@hp.com>
    Signed-off-by: Zefan Li <lizefan@huawei.com>
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Tested-by: Serge Hallyn <serge.hallyn@canonical.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 28a4e9536385dcb35c242c464c19ae0dca76ef78
Author: Tejun Heo <tj@kernel.org>
Date:   Thu Mar 5 08:04:13 2015 -0500

    workqueue: fix hang involving racing cancel[_delayed]_work_sync()'s for PREEMPT_NONE
    
    commit 8603e1b30027f943cc9c1eef2b291d42c3347af1 upstream.
    
    cancel[_delayed]_work_sync() are implemented using
    __cancel_work_timer() which grabs the PENDING bit using
    try_to_grab_pending() and then flushes the work item with PENDING set
    to prevent the on-going execution of the work item from requeueing
    itself.
    
    try_to_grab_pending() can always grab PENDING bit without blocking
    except when someone else is doing the above flushing during
    cancelation.  In that case, try_to_grab_pending() returns -ENOENT.  In
    this case, __cancel_work_timer() currently invokes flush_work().  The
    assumption is that the completion of the work item is what the other
    canceling task would be waiting for too and thus waiting for the same
    condition and retrying should allow forward progress without excessive
    busy looping
    
    Unfortunately, this doesn't work if preemption is disabled or the
    latter task has real time priority.  Let's say task A just got woken
    up from flush_work() by the completion of the target work item.  If,
    before task A starts executing, task B gets scheduled and invokes
    __cancel_work_timer() on the same work item, its try_to_grab_pending()
    will return -ENOENT as the work item is still being canceled by task A
    and flush_work() will also immediately return false as the work item
    is no longer executing.  This puts task B in a busy loop possibly
    preventing task A from executing and clearing the canceling state on
    the work item leading to a hang.
    
    task A			task B			worker
    
    						executing work
    __cancel_work_timer()
      try_to_grab_pending()
      set work CANCELING
      flush_work()
        block for work completion
    						completion, wakes up A
    			__cancel_work_timer()
    			while (forever) {
    			  try_to_grab_pending()
    			    -ENOENT as work is being canceled
    			  flush_work()
    			    false as work is no longer executing
    			}
    
    This patch removes the possible hang by updating __cancel_work_timer()
    to explicitly wait for clearing of CANCELING rather than invoking
    flush_work() after try_to_grab_pending() fails with -ENOENT.
    
    Link: http://lkml.kernel.org/g/20150206171156.GA8942@axis.com
    
    v3: bit_waitqueue() can't be used for work items defined in vmalloc
        area.  Switched to custom wake function which matches the target
        work item and exclusive wait and wakeup.
    
    v2: v1 used wake_up() on bit_waitqueue() which leads to NULL deref if
        the target bit waitqueue has wait_bit_queue's on it.  Use
        DEFINE_WAIT_BIT() and __wake_up_bit() instead.  Reported by Tomeu
        Vizoso.
    
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Reported-by: Rabin Vincent <rabin.vincent@axis.com>
    Cc: Tomeu Vizoso <tomeu.vizoso@gmail.com>
    Tested-by: Jesper Nilsson <jesper.nilsson@axis.com>
    Tested-by: Rabin Vincent <rabin.vincent@axis.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3cc97c83e2051584120819e40e7b0ce4dadf0925
Author: Oliver Hartkopp <socketcan@hartkopp.net>
Date:   Mon Feb 23 20:37:54 2015 +0100

    can: add missing initialisations in CAN related skbuffs
    
    commit 969439016d2cf61fef53a973d7e6d2061c3793b1 upstream.
    
    When accessing CAN network interfaces with AF_PACKET sockets e.g. by dhclient
    this can lead to a skb_under_panic due to missing skb initialisations.
    
    Add the missing initialisations at the CAN skbuff creation times on driver
    level (rx path) and in the network layer (tx path).
    
    Reported-by: Austin Schuh <austin@peloton-tech.com>
    Reported-by: Daniel Steer <daniel.steer@mclaren.com>
    Signed-off-by: Oliver Hartkopp <socketcan@hartkopp.net>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 49f3df5bdeb22ca0258b9ce90365aeb0e2ba041e
Author: Russell King <rmk+kernel@arm.linux.org.uk>
Date:   Fri Mar 6 10:49:21 2015 +0000

    Change email address for 8250_pci
    
    commit f2e0ea861117bda073d1d7ffbd3120c07c0d5d34 upstream.
    
    I'm still receiving reports to my email address, so let's point this
    at the linux-serial mailing list instead.
    
    Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 59cdf18af738eee76a68d0c3557855465e2977a5
Author: Michael S. Tsirkin <mst@redhat.com>
Date:   Thu Mar 5 10:45:49 2015 +1030

    virtio_console: avoid config access from irq
    
    commit eeb8a7e8bb123e84daeef84f5a2eab99ad2839a2 upstream.
    
    when multiport is off, virtio console invokes config access from irq
    context, config access is blocking on s390.
    Fix this up by scheduling work from config irq - similar to what we do
    for multiport configs.
    
    Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
    Reviewed-by: Amit Shah <amit.shah@redhat.com>
    Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8b0c4ab4edfb6b8f4d04ab662a116e90de27695a
Author: Michael S. Tsirkin <mst@redhat.com>
Date:   Thu Mar 5 10:45:30 2015 +1030

    virtio_console: init work unconditionally
    
    commit 4f6e24ed9de8634d6471ef86b382cba6d4e57ca8 upstream.
    
    when multiport is off, we don't initialize config work,
    but we then cancel uninitialized control_work on freeze.
    
    Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
    Reviewed-by: Amit Shah <amit.shah@redhat.com>
    Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c04885d5db4c67e086cbbc3cbafe3f8902ff9dae
Author: Peter Hurley <peter@hurleysoftware.com>
Date:   Sun Mar 1 10:11:05 2015 -0500

    console: Fix console name size mismatch
    
    commit 30a22c215a0007603ffc08021f2e8b64018517dd upstream.
    
    commit 6ae9200f2cab7 ("enlarge console.name") increased the storage
    for the console name to 16 bytes, but not the corresponding
    struct console_cmdline::name storage. Console names longer than
    8 bytes cause read beyond end-of-string and failure to match
    console; I'm not sure if there are other unexpected consequences.
    
    Signed-off-by: Peter Hurley <peter@hurleysoftware.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 07bb18dc02092b45e8ea508adf899c35cc181b65
Author: Miklos Szeredi <mszeredi@suse.cz>
Date:   Thu Feb 26 11:45:47 2015 +0100

    fuse: notify: don't move pages
    
    commit 0d2783626a53d4c922f82d51fa675cb5d13f0d36 upstream.
    
    fuse_try_move_page() is not prepared for replacing pages that have already
    been read.
    
    Reported-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Miklos Szeredi <mszeredi@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 343a1ba48be881067a96fb22fb426dfa8c8db10a
Author: Miklos Szeredi <mszeredi@suse.cz>
Date:   Thu Feb 26 11:45:47 2015 +0100

    fuse: set stolen page uptodate
    
    commit aa991b3b267e24f578bac7b09cc57579b660304b upstream.
    
    Regular pipe buffers' ->steal method (generic_pipe_buf_steal()) doesn't set
    PG_uptodate.
    
    Don't warn on this condition, just set the uptodate flag.
    
    Signed-off-by: Miklos Szeredi <mszeredi@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d34369c74089215e0eb4d18697fd69591f4f2cdb
Author: JeHyeon Yeon <tom.yeon@windriver.com>
Date:   Mon Mar 16 01:03:19 2015 +0000

    LZ4 : fix the data abort issue
    
    commit d5e7cafd69da24e6d6cc988fab6ea313a2577efc upstream.
    
    If the part of the compression data are corrupted, or the compression
    data is totally fake, the memory access over the limit is possible.
    
    This is the log from my system usning lz4 decompression.
       [6502]data abort, halting
       [6503]r0  0x00000000 r1  0x00000000 r2  0xdcea0ffc r3  0xdcea0ffc
       [6509]r4  0xb9ab0bfd r5  0xdcea0ffc r6  0xdcea0ff8 r7  0xdce80000
       [6515]r8  0x00000000 r9  0x00000000 r10 0x00000000 r11 0xb9a98000
       [6522]r12 0xdcea1000 usp 0x00000000 ulr 0x00000000 pc  0x820149bc
       [6528]spsr 0x400001f3
    and the memory addresses of some variables at the moment are
        ref:0xdcea0ffc, op:0xdcea0ffc, oend:0xdcea1000
    
    As you can see, COPYLENGH is 8bytes, so @ref and @op can access the momory
    over @oend.
    
    Signed-off-by: JeHyeon Yeon <tom.yeon@windriver.com>
    Reviewed-by: David Sterba <dsterba@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 12a95096f440beead7b10fb3335890114bdbf67f
Author: Christian König <christian.koenig@amd.com>
Date:   Thu Feb 19 09:40:28 2015 +0100

    drm/radeon: drop setting UPLL to sleep mode
    
    commit a17d4996e051e78d164989b894608cf37cd5110b upstream.
    
    Just keep it working, seems to fix some PLL problems.
    
    Bug: https://bugs.freedesktop.org/show_bug.cgi?id=73378
    
    Signed-off-by: Christian König <christian.koenig@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b2e7ca9055d8c3733b5f41d9cce5a761fb53f3d0
Author: Alex Deucher <alexander.deucher@amd.com>
Date:   Tue Mar 3 17:00:43 2015 -0500

    drm/radeon: fix interlaced modes on DCE8
    
    commit 77ae5f4b48a0445426c9c1ef7c0f28b717e35d55 upstream.
    
    Need to double the viewport height.
    
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bb0677edcd41fe506e02b48a3df49cd9a6048507
Author: Alex Deucher <alexander.deucher@amd.com>
Date:   Mon Mar 2 20:39:56 2015 -0500

    drm/radeon: do a posting read in rs600_set_irq
    
    commit 54acf107e4e66d1f4a697e08a7f60dba9fcf07c3 upstream.
    
    To make sure the writes go through the pci bridge.
    
    bug:
    https://bugzilla.kernel.org/show_bug.cgi?id=90741
    
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 85c5b0d3c4c9a9a724d058a4f8fc53e45e142c0a
Author: Alex Deucher <alexander.deucher@amd.com>
Date:   Mon Mar 2 20:43:53 2015 -0500

    drm/radeon: do a posting read in si_set_irq
    
    commit 0586915ec10d0ae60de5cd3381ad25a704760402 upstream.
    
    To make sure the writes go through the pci bridge.
    
    bug:
    https://bugzilla.kernel.org/show_bug.cgi?id=90741
    
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 028e9163a3b794a67c21d8a1519a4a1ad80bec99
Author: Alex Deucher <alexander.deucher@amd.com>
Date:   Mon Mar 2 20:45:24 2015 -0500

    drm/radeon: do a posting read in cik_set_irq
    
    commit cffefd9bb31cd35ab745d3b49005d10616d25bdc upstream.
    
    To make sure the writes go through the pci bridge.
    
    bug:
    https://bugzilla.kernel.org/show_bug.cgi?id=90741
    
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 82e7798ff40b5b9a6723092c4314c23a49362115
Author: Alex Deucher <alexander.deucher@amd.com>
Date:   Mon Mar 2 20:41:31 2015 -0500

    drm/radeon: do a posting read in r600_set_irq
    
    commit 9d1393f23d5656cdd5f368efd60694d4aeed81d3 upstream.
    
    To make sure the writes go through the pci bridge.
    
    bug:
    https://bugzilla.kernel.org/show_bug.cgi?id=90741
    
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 36358b3f64dab4e9372a520901a7636cf6e01a1e
Author: Alex Deucher <alexander.deucher@amd.com>
Date:   Mon Mar 2 20:36:26 2015 -0500

    drm/radeon: do a posting read in r100_set_irq
    
    commit f957063fee6392bb9365370db6db74dc0b2dce0a upstream.
    
    To make sure the writes go through the pci bridge.
    
    bug:
    https://bugzilla.kernel.org/show_bug.cgi?id=90741
    
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 336163cf1efa4ecb05ce33d64e4b32c93aa10e04
Author: Alex Deucher <alexander.deucher@amd.com>
Date:   Mon Mar 2 20:42:53 2015 -0500

    drm/radeon: do a posting read in evergreen_set_irq
    
    commit c320bb5f6dc0cb88a811cbaf839303e0a3916a92 upstream.
    
    To make sure the writes go through the pci bridge.
    
    bug:
    https://bugzilla.kernel.org/show_bug.cgi?id=90741
    
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 896bda003c628a5ca26b8f878d1f2e87ce132fae
Author: Tommi Rantala <tt.rantala@gmail.com>
Date:   Mon Mar 2 21:36:07 2015 +0200

    drm/radeon: fix DRM_IOCTL_RADEON_CS oops
    
    commit a28b2a47edcd0cb7c051b445f71a426000394606 upstream.
    
    Passing zeroed drm_radeon_cs struct to DRM_IOCTL_RADEON_CS produces the
    following oops.
    
    Fix by always calling INIT_LIST_HEAD() to avoid the crash in list_sort().
    
    ----------------------------------
    
     #include <stdint.h>
     #include <fcntl.h>
     #include <unistd.h>
     #include <sys/ioctl.h>
     #include <drm/radeon_drm.h>
    
     static const struct drm_radeon_cs cs;
    
     int main(int argc, char **argv)
     {
             return ioctl(open(argv[1], O_RDWR), DRM_IOCTL_RADEON_CS, &cs);
     }
    
    ----------------------------------
    
    [ttrantal@test2 ~]$ ./main /dev/dri/card0
    [   46.904650] BUG: unable to handle kernel NULL pointer dereference at           (null)
    [   46.905022] IP: [<ffffffff814d6df2>] list_sort+0x42/0x240
    [   46.905022] PGD 68f29067 PUD 688b5067 PMD 0
    [   46.905022] Oops: 0002 [#1] SMP
    [   46.905022] CPU: 0 PID: 2413 Comm: main Not tainted 4.0.0-rc1+ #58
    [   46.905022] Hardware name: Hewlett-Packard HP Compaq dc5750 Small Form Factor/0A64h, BIOS 786E3 v02.10 01/25/2007
    [   46.905022] task: ffff880058e2bcc0 ti: ffff880058e64000 task.ti: ffff880058e64000
    [   46.905022] RIP: 0010:[<ffffffff814d6df2>]  [<ffffffff814d6df2>] list_sort+0x42/0x240
    [   46.905022] RSP: 0018:ffff880058e67998  EFLAGS: 00010246
    [   46.905022] RAX: 0000000000000000 RBX: 0000000000000000 RCX: 0000000000000000
    [   46.905022] RDX: ffffffff81644410 RSI: ffff880058e67b40 RDI: ffff880058e67a58
    [   46.905022] RBP: ffff880058e67a88 R08: 0000000000000000 R09: 0000000000000000
    [   46.905022] R10: ffff880058e2bcc0 R11: ffffffff828e6ca0 R12: ffffffff81644410
    [   46.905022] R13: ffff8800694b8018 R14: 0000000000000000 R15: ffff880058e679b0
    [   46.905022] FS:  00007fdc65a65700(0000) GS:ffff88006d600000(0000) knlGS:0000000000000000
    [   46.905022] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [   46.905022] CR2: 0000000000000000 CR3: 0000000058dd9000 CR4: 00000000000006f0
    [   46.905022] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    [   46.905022] DR3: 0000000000000000 DR6: 00000000ffff4ff0 DR7: 0000000000000400
    [   46.905022] Stack:
    [   46.905022]  ffff880058e67b40 ffff880058e2bcc0 ffff880058e67a78 0000000000000000
    [   46.905022]  0000000000000000 0000000000000000 0000000000000000 0000000000000000
    [   46.905022]  0000000000000000 0000000000000000 0000000000000000 0000000000000000
    [   46.905022] Call Trace:
    [   46.905022]  [<ffffffff81644a65>] radeon_cs_parser_fini+0x195/0x220
    [   46.905022]  [<ffffffff81645069>] radeon_cs_ioctl+0xa9/0x960
    [   46.905022]  [<ffffffff815e1f7c>] drm_ioctl+0x19c/0x640
    [   46.905022]  [<ffffffff810f8fdd>] ? trace_hardirqs_on_caller+0xfd/0x1c0
    [   46.905022]  [<ffffffff810f90ad>] ? trace_hardirqs_on+0xd/0x10
    [   46.905022]  [<ffffffff8160c066>] radeon_drm_ioctl+0x46/0x80
    [   46.905022]  [<ffffffff81211868>] do_vfs_ioctl+0x318/0x570
    [   46.905022]  [<ffffffff81462ef6>] ? selinux_file_ioctl+0x56/0x110
    [   46.905022]  [<ffffffff81211b41>] SyS_ioctl+0x81/0xa0
    [   46.905022]  [<ffffffff81dc6312>] system_call_fastpath+0x12/0x17
    [   46.905022] Code: 48 89 b5 10 ff ff ff 0f 84 03 01 00 00 4c 8d bd 28 ff ff
    ff 31 c0 48 89 fb b9 15 00 00 00 49 89 d4 4c 89 ff f3 48 ab 48 8b 46 08 <48> c7
    00 00 00 00 00 48 8b 0e 48 85 c9 0f 84 7d 00 00 00 c7 85
    [   46.905022] RIP  [<ffffffff814d6df2>] list_sort+0x42/0x240
    [   46.905022]  RSP <ffff880058e67998>
    [   46.905022] CR2: 0000000000000000
    [   47.149253] ---[ end trace 09576b4e8b2c20b8 ]---
    
    Reviewed-by: Christian König <christian.koenig@amd.com>
    Signed-off-by: Tommi Rantala <tt.rantala@gmail.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5a8e8f482b4a0a058cf886d7da5be6827959d100
Author: Eric Dumazet <edumazet@google.com>
Date:   Mon Nov 17 23:06:20 2014 -0800

    tcp: make connect() mem charging friendly
    
    [ Upstream commit 355a901e6cf1b2b763ec85caa2a9f04fbcc4ab4a ]
    
    While working on sk_forward_alloc problems reported by Denys
    Fedoryshchenko, we found that tcp connect() (and fastopen) do not call
    sk_wmem_schedule() for SYN packet (and/or SYN/DATA packet), so
    sk_forward_alloc is negative while connect is in progress.
    
    We can fix this by calling regular sk_stream_alloc_skb() both for the
    SYN packet (in tcp_connect()) and the syn_data packet in
    tcp_send_syn_data()
    
    Then, tcp_send_syn_data() can avoid copying syn_data as we simply
    can manipulate syn_data->cb[] to remove SYN flag (and increment seq)
    
    Instead of open coding memcpy_fromiovecend(), simply use this helper.
    
    This leaves in socket write queue clean fast clone skbs.
    
    This was tested against our fastopen packetdrill tests.
    
    Reported-by: Denys Fedoryshchenko <nuclearcat@nuclearcat.com>
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Acked-by: Yuchung Cheng <ycheng@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b16f59e616f0377c3f7f54630a1d8a631b054282
Author: Catalin Marinas <catalin.marinas@arm.com>
Date:   Fri Mar 20 16:48:13 2015 +0000

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

commit be41c4fc268e06af8be72ec598bef7ab3f155208
Author: Josh Hunt <johunt@akamai.com>
Date:   Thu Mar 19 19:19:30 2015 -0400

    tcp: fix tcp fin memory accounting
    
    [ Upstream commit d22e1537181188e5dc8cbc51451832625035bdc2 ]
    
    tcp_send_fin() does not account for the memory it allocates properly, so
    sk_forward_alloc can be negative in cases where we've sent a FIN:
    
    ss example output (ss -amn | grep -B1 f4294):
    tcp    FIN-WAIT-1 0      1            192.168.0.1:45520         192.0.2.1:8080
    	skmem:(r0,rb87380,t0,tb87380,f4294966016,w1280,o0,bl0)
    Acked-by: Eric Dumazet <edumazet@google.com>
    
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b7460a1fe397d5bc434f5f8c3b8bac61f4cec6a1
Author: Steven Barth <cyrus@openwrt.org>
Date:   Thu Mar 19 16:16:04 2015 +0100

    ipv6: fix backtracking for throw routes
    
    [ Upstream commit 73ba57bfae4a1914f6a6dac71e3168dd900e00af ]
    
    for throw routes to trigger evaluation of other policy rules
    EAGAIN needs to be propagated up to fib_rules_lookup
    similar to how its done for IPv4
    
    A simple testcase for verification is:
    
    ip -6 rule add lookup 33333 priority 33333
    ip -6 route add throw 2001:db8::1
    ip -6 route add 2001:db8::1 via fe80::1 dev wlan0 table 33333
    ip route get 2001:db8::1
    
    Signed-off-by: Steven Barth <cyrus@openwrt.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 280683cb38e7faa963e50e58286b8b00e8a8b953
Author: Ondrej Zary <linux@rainbow-software.org>
Date:   Wed Mar 18 23:01:01 2015 +0100

    Revert "net: cx82310_eth: use common match macro"
    
    [ Upstream commit 8d006e0105978619fb472e150c88b0d49337fe2b ]
    
    This reverts commit 11ad714b98f6d9ca0067568442afe3e70eb94845 because
    it breaks cx82310_eth.
    
    The custom USB_DEVICE_CLASS macro matches
    bDeviceClass, bDeviceSubClass and bDeviceProtocol
    but the common USB_DEVICE_AND_INTERFACE_INFO matches
    bInterfaceClass, bInterfaceSubClass and bInterfaceProtocol instead, which are
    not specified.
    
    Signed-off-by: Ondrej Zary <linux@rainbow-software.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 559a177e5bd74e1621a11fb11a7abb2d4ae38944
Author: Al Viro <viro@ZenIV.linux.org.uk>
Date:   Sat Mar 14 05:34:56 2015 +0000

    rxrpc: bogus MSG_PEEK test in rxrpc_recvmsg()
    
    [ Upstream commit 7d985ed1dca5c90535d67ce92ef6ca520302340a ]
    
    [I would really like an ACK on that one from dhowells; it appears to be
    quite straightforward, but...]
    
    MSG_PEEK isn't passed to ->recvmsg() via msg->msg_flags; as the matter of
    fact, neither the kernel users of rxrpc, nor the syscalls ever set that bit
    in there.  It gets passed via flags; in fact, another such check in the same
    function is done correctly - as flags & MSG_PEEK.
    
    It had been that way (effectively disabled) for 8 years, though, so the patch
    needs beating up - that case had never been tested.  If it is correct, it's
    -stable fodder.
    
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e83f0e31c85cce4d0071aa2acf8852fc0207abd3
Author: Al Viro <viro@ZenIV.linux.org.uk>
Date:   Sat Mar 14 05:22:21 2015 +0000

    caif: fix MSG_OOB test in caif_seqpkt_recvmsg()
    
    [ Upstream commit 3eeff778e00c956875c70b145c52638c313dfb23 ]
    
    It should be checking flags, not msg->msg_flags.  It's ->sendmsg()
    instances that need to look for that in ->msg_flags, ->recvmsg() ones
    (including the other ->recvmsg() instance in that file, as well as
    unix_dgram_recvmsg() this one claims to be imitating) check in flags.
    Braino had been introduced in commit dcda13 ("caif: Bugfix - use MSG_TRUNC
    in receive") back in 2010, so it goes quite a while back.
    
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5e1c79561ca426ad8cc757204eff7baf75fa7eb4
Author: Eric Dumazet <edumazet@google.com>
Date:   Fri Mar 13 09:49:59 2015 -0700

    inet_diag: fix possible overflow in inet_diag_dump_one_icsk()
    
    [ Upstream commit c8e2c80d7ec00d020320f905822bf49c5ad85250 ]
    
    inet_diag_dump_one_icsk() allocates too small skb.
    
    Add inet_sk_attr_size() helper right before inet_sk_diag_fill()
    so that it can be updated if/when new attributes are added.
    
    iproute2/ss currently does not use this dump_one() interface,
    this might explain nobody noticed this problem yet.
    
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 03d7e82103b42e2c3135e6f1f36371c4d21a5ff5
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Wed Mar 11 22:46:59 2015 +0100

    rds: avoid potential stack overflow
    
    [ Upstream commit f862e07cf95d5b62a5fc5e981dd7d0dbaf33a501 ]
    
    The rds_iw_update_cm_id function stores a large 'struct rds_sock' object
    on the stack in order to pass a pair of addresses. This happens to just
    fit withint the 1024 byte stack size warning limit on x86, but just
    exceed that limit on ARM, which gives us this warning:
    
    net/rds/iw_rdma.c:200:1: warning: the frame size of 1056 bytes is larger than 1024 bytes [-Wframe-larger-than=]
    
    As the use of this large variable is basically bogus, we can rearrange
    the code to not do that. Instead of passing an rds socket into
    rds_iw_get_device, we now just pass the two addresses that we have
    available in rds_iw_update_cm_id, and we change rds_iw_get_mr accordingly,
    to create two address structures on the stack there.
    
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Acked-by: Sowmini Varadhan <sowmini.varadhan@oracle.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a1d55b36de6bf21d0d5405c5123d055ff46e8978
Author: Alexey Kodanev <alexey.kodanev@oracle.com>
Date:   Wed Mar 11 14:29:17 2015 +0300

    net: sysctl_net_core: check SNDBUF and RCVBUF for min length
    
    [ Upstream commit b1cb59cf2efe7971d3d72a7b963d09a512d994c9 ]
    
    sysctl has sysctl.net.core.rmem_*/wmem_* parameters which can be
    set to incorrect values. Given that 'struct sk_buff' allocates from
    rcvbuf, incorrectly set buffer length could result to memory
    allocation failures. For example, set them as follows:
    
        # sysctl net.core.rmem_default=64
          net.core.wmem_default = 64
        # sysctl net.core.wmem_default=64
          net.core.wmem_default = 64
        # ping localhost -s 1024 -i 0 > /dev/null
    
    This could result to the following failure:
    
    skbuff: skb_over_panic: text:ffffffff81628db4 len:-32 put:-32
    head:ffff88003a1cc200 data:ffff88003a1cc200 tail:0xffffffe0 end:0xc0 dev:<NULL>
    kernel BUG at net/core/skbuff.c:102!
    invalid opcode: 0000 [#1] SMP
    ...
    task: ffff88003b7f5550 ti: ffff88003ae88000 task.ti: ffff88003ae88000
    RIP: 0010:[<ffffffff8155fbd1>]  [<ffffffff8155fbd1>] skb_put+0xa1/0xb0
    RSP: 0018:ffff88003ae8bc68  EFLAGS: 00010296
    RAX: 000000000000008d RBX: 00000000ffffffe0 RCX: 0000000000000000
    RDX: ffff88003fdcf598 RSI: ffff88003fdcd9c8 RDI: ffff88003fdcd9c8
    RBP: ffff88003ae8bc88 R08: 0000000000000001 R09: 0000000000000000
    R10: 0000000000000001 R11: 00000000000002b2 R12: 0000000000000000
    R13: 0000000000000000 R14: ffff88003d3f7300 R15: ffff88000012a900
    FS:  00007fa0e2b4a840(0000) GS:ffff88003fc00000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 0000000000d0f7e0 CR3: 000000003b8fb000 CR4: 00000000000006f0
    Stack:
     ffff88003a1cc200 00000000ffffffe0 00000000000000c0 ffffffff818cab1d
     ffff88003ae8bd68 ffffffff81628db4 ffff88003ae8bd48 ffff88003b7f5550
     ffff880031a09408 ffff88003b7f5550 ffff88000012aa48 ffff88000012ab00
    Call Trace:
     [<ffffffff81628db4>] unix_stream_sendmsg+0x2c4/0x470
     [<ffffffff81556f56>] sock_write_iter+0x146/0x160
     [<ffffffff811d9612>] new_sync_write+0x92/0xd0
     [<ffffffff811d9cd6>] vfs_write+0xd6/0x180
     [<ffffffff811da499>] SyS_write+0x59/0xd0
     [<ffffffff81651532>] system_call_fastpath+0x12/0x17
    Code: 00 00 48 89 44 24 10 8b 87 c8 00 00 00 48 89 44 24 08 48 8b 87 d8 00
          00 00 48 c7 c7 30 db 91 81 48 89 04 24 31 c0 e8 4f a8 0e 00 <0f> 0b
          eb fe 66 66 2e 0f 1f 84 00 00 00 00 00 55 48 89 e5 48 83
    RIP  [<ffffffff8155fbd1>] skb_put+0xa1/0xb0
    RSP <ffff88003ae8bc68>
    Kernel panic - not syncing: Fatal exception
    
    Moreover, the possible minimum is 1, so we can get another kernel panic:
    ...
    BUG: unable to handle kernel paging request at ffff88013caee5c0
    IP: [<ffffffff815604cf>] __alloc_skb+0x12f/0x1f0
    ...
    
    Signed-off-by: Alexey Kodanev <alexey.kodanev@oracle.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 82a8ba712c44e003903245100db356ef203f78fb
Author: David S. Miller <davem@davemloft.net>
Date:   Mon Mar 23 09:22:10 2015 -0700

    sparc64: Fix several bugs in memmove().
    
    [ Upstream commit 2077cef4d5c29cf886192ec32066f783d6a80db8 ]
    
    Firstly, handle zero length calls properly.  Believe it or not there
    are a few of these happening during early boot.
    
    Next, we can't just drop to a memcpy() call in the forward copy case
    where dst <= src.  The reason is that the cache initializing stores
    used in the Niagara memcpy() implementations can end up clearing out
    cache lines before we've sourced their original contents completely.
    
    For example, considering NG4memcpy, the main unrolled loop begins like
    this:
    
         load   src + 0x00
         load   src + 0x08
         load   src + 0x10
         load   src + 0x18
         load   src + 0x20
         store  dst + 0x00
    
    Assume dst is 64 byte aligned and let's say that dst is src - 8 for
    this memcpy() call.  That store at the end there is the one to the
    first line in the cache line, thus clearing the whole line, which thus
    clobbers "src + 0x28" before it even gets loaded.
    
    To avoid this, just fall through to a simple copy only mildly
    optimized for the case where src and dst are 8 byte aligned and the
    length is a multiple of 8 as well.  We could get fancy and call
    GENmemcpy() but this is good enough for how this thing is actually
    used.
    
    Reported-by: David Ahern <david.ahern@oracle.com>
    Reported-by: Bob Picco <bpicco@meloft.net>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cdbe631ba36015f619ba716f48dc46e4455d836d
Author: David Ahern <david.ahern@oracle.com>
Date:   Thu Mar 19 16:06:53 2015 -0400

    sparc: Touch NMI watchdog when walking cpus and calling printk
    
    [ Upstream commit 31aaa98c248da766ece922bbbe8cc78cfd0bc920 ]
    
    With the increase in number of CPUs calls to functions that dump
    output to console (e.g., arch_trigger_all_cpu_backtrace) can take
    a long time to complete. If IRQs are disabled eventually the NMI
    watchdog kicks in and creates more havoc. Avoid by telling the NMI
    watchdog everything is ok.
    
    Signed-off-by: David Ahern <david.ahern@oracle.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c6bf6b54c72ecadd23107f83d8d23aac2b8bac83
Author: David Ahern <david.ahern@oracle.com>
Date:   Thu Mar 19 16:06:17 2015 -0400

    sparc: perf: Make counting mode actually work
    
    [ Upstream commit d51291cb8f32bfae6b331e1838651f3ddefa73a5 ]
    
    Currently perf-stat (aka, counting mode) does not work:
    
    $ perf stat ls
    ...
     Performance counter stats for 'ls':
    
              1.585665      task-clock (msec)         #    0.580 CPUs utilized
                    24      context-switches          #    0.015 M/sec
                     0      cpu-migrations            #    0.000 K/sec
                    86      page-faults               #    0.054 M/sec
       <not supported>      cycles
       <not supported>      stalled-cycles-frontend
       <not supported>      stalled-cycles-backend
       <not supported>      instructions
       <not supported>      branches
       <not supported>      branch-misses
    
           0.002735100 seconds time elapsed
    
    The reason is that state is never reset (stays with PERF_HES_UPTODATE set).
    Add a call to sparc_pmu_enable_event during the added_event handling.
    Clean up the encoding since pmu_start calls sparc_pmu_enable_event which
    does the same. Passing PERF_EF_RELOAD to sparc_pmu_start means the call
    to sparc_perf_event_set_period can be removed as well.
    
    With this patch:
    
    $ perf stat ls
    ...
     Performance counter stats for 'ls':
    
              1.552890      task-clock (msec)         #    0.552 CPUs utilized
                    24      context-switches          #    0.015 M/sec
                     0      cpu-migrations            #    0.000 K/sec
                    86      page-faults               #    0.055 M/sec
             5,748,997      cycles                    #    3.702 GHz
       <not supported>      stalled-cycles-frontend:HG
       <not supported>      stalled-cycles-backend:HG
             1,684,362      instructions:HG           #    0.29  insns per cycle
               295,133      branches:HG               #  190.054 M/sec
                28,007      branch-misses:HG          #    9.49% of all branches
    
           0.002815665 seconds time elapsed
    
    Signed-off-by: David Ahern <david.ahern@oracle.com>
    Acked-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 e6f1c6bb4214265610cd351f91ba27feffa67ffa
Author: David Ahern <david.ahern@oracle.com>
Date:   Thu Mar 19 16:05:57 2015 -0400

    sparc: perf: Remove redundant perf_pmu_{en|dis}able calls
    
    [ Upstream commit 5b0d4b5514bbcce69b516d0742f2cfc84ebd6db3 ]
    
    perf_pmu_disable is called by core perf code before pmu->del and the
    enable function is called by core perf code afterwards. No need to
    call again within sparc_pmu_del.
    
    Ditto for pmu->add and sparc_pmu_add.
    
    Signed-off-by: David Ahern <david.ahern@oracle.com>
    Acked-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 61b30f78cfbcc44800857e0da1a9d2372ffab86e
Author: Rob Gardner <rob.gardner@oracle.com>
Date:   Mon Mar 2 23:16:55 2015 -0700

    sparc: semtimedop() unreachable due to comparison error
    
    [ Upstream commit 53eb2516972b8c4628651dfcb926cb9ef8b2864a ]
    
    A bug was reported that the semtimedop() system call was always
    failing eith ENOSYS.
    
    Since SEMCTL is defined as 3, and SEMTIMEDOP is defined as 4,
    the comparison "call <= SEMCTL" will always prevent SEMTIMEDOP
    from getting through to the semaphore ops switch statement.
    
    This is corrected by changing the comparison to "call <= SEMTIMEDOP".
    
    Orabug: 20633375
    
    Signed-off-by: Rob Gardner <rob.gardner@oracle.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8df06a353b6ac3ceb942364a343ae44fcc93c363
Author: Andreas Larsson <andreas@gaisler.com>
Date:   Thu Dec 18 13:23:23 2014 +0100

    sparc32: destroy_context() and switch_mm() needs to disable interrupts.
    
    [ Upstream commit 66d0f7ec9f1038452178b1993fc07fd96d30fd38 ]
    
    Load balancing can be triggered in the critical sections protected by
    srmmu_context_spinlock in destroy_context() and switch_mm() and can hang
    the cpu waiting for the rq lock of another cpu that in turn has called
    switch_mm hangning on srmmu_context_spinlock leading to deadlock.
    
    So, disable interrupt while taking srmmu_context_spinlock in
    destroy_context() and switch_mm() so we don't deadlock.
    
    See also commit 77b838fa1ef0 ("[SPARC64]: destroy_context() needs to disable
    interrupts.")
    
    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 608d3348e0abac289a11ce2b650b59eb39f8f967
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Thu Mar 19 14:17:42 2015 +0100

    iio: mxs-lradc: fix merge error
    
    Commit e7f3db14eacaf1993a70b1517582603dfdf34988 (89bb35e200bee745c539a96666e0792301ca40f1 upstream) was backported incorrectly by me, so fix it up, as the driver is now broken.
    
    Sorry about that.
    
    Reported-by: Kristina Martšenko <kristina.martsenko@gmail.com>
    Cc: Marek Vasut <marex@denx.de>
    Cc: Jonathan Cameron <jic23@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>