commit c2f7eb8029e23c4f5445340d8fc0d05367538e6d
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Sat Jun 7 13:48:31 2014 -0700

    Linux 3.10.42

commit efccdcdb63a7f7cc7cc1816f0d5e2524eb084c72
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Tue Jun 3 12:27:08 2014 +0000

    futex: Make lookup_pi_state more robust
    
    commit 54a217887a7b658e2650c3feff22756ab80c7339 upstream.
    
    The current implementation of lookup_pi_state has ambigous handling of
    the TID value 0 in the user space futex.  We can get into the kernel
    even if the TID value is 0, because either there is a stale waiters bit
    or the owner died bit is set or we are called from the requeue_pi path
    or from user space just for fun.
    
    The current code avoids an explicit sanity check for pid = 0 in case
    that kernel internal state (waiters) are found for the user space
    address.  This can lead to state leakage and worse under some
    circumstances.
    
    Handle the cases explicit:
    
           Waiter | pi_state | pi->owner | uTID      | uODIED | ?
    
      [1]  NULL   | ---      | ---       | 0         | 0/1    | Valid
      [2]  NULL   | ---      | ---       | >0        | 0/1    | Valid
    
      [3]  Found  | NULL     | --        | Any       | 0/1    | Invalid
    
      [4]  Found  | Found    | NULL      | 0         | 1      | Valid
      [5]  Found  | Found    | NULL      | >0        | 1      | Invalid
    
      [6]  Found  | Found    | task      | 0         | 1      | Valid
    
      [7]  Found  | Found    | NULL      | Any       | 0      | Invalid
    
      [8]  Found  | Found    | task      | ==taskTID | 0/1    | Valid
      [9]  Found  | Found    | task      | 0         | 0      | Invalid
      [10] Found  | Found    | task      | !=taskTID | 0/1    | Invalid
    
     [1] Indicates that the kernel can acquire the futex atomically. We
         came came here due to a stale FUTEX_WAITERS/FUTEX_OWNER_DIED bit.
    
     [2] Valid, if TID does not belong to a kernel thread. If no matching
         thread is found then it indicates that the owner TID has died.
    
     [3] Invalid. The waiter is queued on a non PI futex
    
     [4] Valid state after exit_robust_list(), which sets the user space
         value to FUTEX_WAITERS | FUTEX_OWNER_DIED.
    
     [5] The user space value got manipulated between exit_robust_list()
         and exit_pi_state_list()
    
     [6] Valid state after exit_pi_state_list() which sets the new owner in
         the pi_state but cannot access the user space value.
    
     [7] pi_state->owner can only be NULL when the OWNER_DIED bit is set.
    
     [8] Owner and user space value match
    
     [9] There is no transient state which sets the user space TID to 0
         except exit_robust_list(), but this is indicated by the
         FUTEX_OWNER_DIED bit. See [4]
    
    [10] There is no transient state which leaves owner and user space
         TID out of sync.
    
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: Kees Cook <keescook@chromium.org>
    Cc: Will Drewry <wad@chromium.org>
    Cc: Darren Hart <dvhart@linux.intel.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9ad5dabd87e8dd5506529e12e4e8c7b25fb88d7a
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Tue Jun 3 12:27:07 2014 +0000

    futex: Always cleanup owner tid in unlock_pi
    
    commit 13fbca4c6ecd96ec1a1cfa2e4f2ce191fe928a5e upstream.
    
    If the owner died bit is set at futex_unlock_pi, we currently do not
    cleanup the user space futex.  So the owner TID of the current owner
    (the unlocker) persists.  That's observable inconsistant state,
    especially when the ownership of the pi state got transferred.
    
    Clean it up unconditionally.
    
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: Kees Cook <keescook@chromium.org>
    Cc: Will Drewry <wad@chromium.org>
    Cc: Darren Hart <dvhart@linux.intel.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 63d6ad59dd43f44249150aa8c72eeb01bbe0a599
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Tue Jun 3 12:27:06 2014 +0000

    futex: Validate atomic acquisition in futex_lock_pi_atomic()
    
    commit b3eaa9fc5cd0a4d74b18f6b8dc617aeaf1873270 upstream.
    
    We need to protect the atomic acquisition in the kernel against rogue
    user space which sets the user space futex to 0, so the kernel side
    acquisition succeeds while there is existing state in the kernel
    associated to the real owner.
    
    Verify whether the futex has waiters associated with kernel state.  If
    it has, return -EINVAL.  The state is corrupted already, so no point in
    cleaning it up.  Subsequent calls will fail as well.  Not our problem.
    
    [ tglx: Use futex_top_waiter() and explain why we do not need to try
      	restoring the already corrupted user space state. ]
    
    Signed-off-by: Darren Hart <dvhart@linux.intel.com>
    Cc: Kees Cook <keescook@chromium.org>
    Cc: Will Drewry <wad@chromium.org>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b58623fb64ff0454ec20bce7a02275a20c23086d
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Tue Jun 3 12:27:06 2014 +0000

    futex-prevent-requeue-pi-on-same-futex.patch futex: Forbid uaddr == uaddr2 in futex_requeue(..., requeue_pi=1)
    
    commit e9c243a5a6de0be8e584c604d353412584b592f8 upstream.
    
    If uaddr == uaddr2, then we have broken the rule of only requeueing from
    a non-pi futex to a pi futex with this call.  If we attempt this, then
    dangling pointers may be left for rt_waiter resulting in an exploitable
    condition.
    
    This change brings futex_requeue() in line with futex_wait_requeue_pi()
    which performs the same check as per commit 6f7b0a2a5c0f ("futex: Forbid
    uaddr == uaddr2 in futex_wait_requeue_pi()")
    
    [ tglx: Compare the resulting keys as well, as uaddrs might be
      	different depending on the mapping ]
    
    Fixes CVE-2014-3153.
    
    Reported-by: Pinkie Pie
    Signed-off-by: Will Drewry <wad@chromium.org>
    Signed-off-by: Kees Cook <keescook@chromium.org>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Reviewed-by: Darren Hart <dvhart@linux.intel.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4237cc8ef3fc3916c337423cbaab818890e628c8
Author: Stanislaw Gruszka <sgruszka@redhat.com>
Date:   Wed Feb 19 13:15:17 2014 +0100

    ath9k: protect tid->sched check
    
    [ Upstream commit 21f8aaee0c62708654988ce092838aa7df4d25d8 ]
    
    We check tid->sched without a lock taken on ath_tx_aggr_sleep(). That
    is race condition which can result of doing list_del(&tid->list) twice
    (second time with poisoned list node) and cause crash like shown below:
    
    [424271.637220] BUG: unable to handle kernel paging request at 00100104
    [424271.637328] IP: [<f90fc072>] ath_tx_aggr_sleep+0x62/0xe0 [ath9k]
    ...
    [424271.639953] Call Trace:
    [424271.639998]  [<f90f6900>] ? ath9k_get_survey+0x110/0x110 [ath9k]
    [424271.640083]  [<f90f6942>] ath9k_sta_notify+0x42/0x50 [ath9k]
    [424271.640177]  [<f809cfef>] sta_ps_start+0x8f/0x1c0 [mac80211]
    [424271.640258]  [<c10f730e>] ? free_compound_page+0x2e/0x40
    [424271.640346]  [<f809e915>] ieee80211_rx_handlers+0x9d5/0x2340 [mac80211]
    [424271.640437]  [<c112f048>] ? kmem_cache_free+0x1d8/0x1f0
    [424271.640510]  [<c1345a84>] ? kfree_skbmem+0x34/0x90
    [424271.640578]  [<c10fc23c>] ? put_page+0x2c/0x40
    [424271.640640]  [<c1345a84>] ? kfree_skbmem+0x34/0x90
    [424271.640706]  [<c1345a84>] ? kfree_skbmem+0x34/0x90
    [424271.640787]  [<f809dde3>] ? ieee80211_rx_handlers_result+0x73/0x1d0 [mac80211]
    [424271.640897]  [<f80a07a0>] ieee80211_prepare_and_rx_handle+0x520/0xad0 [mac80211]
    [424271.641009]  [<f809e22d>] ? ieee80211_rx_handlers+0x2ed/0x2340 [mac80211]
    [424271.641104]  [<c13846ce>] ? ip_output+0x7e/0xd0
    [424271.641182]  [<f80a1057>] ieee80211_rx+0x307/0x7c0 [mac80211]
    [424271.641266]  [<f90fa6ee>] ath_rx_tasklet+0x88e/0xf70 [ath9k]
    [424271.641358]  [<f80a0f2c>] ? ieee80211_rx+0x1dc/0x7c0 [mac80211]
    [424271.641445]  [<f90f82db>] ath9k_tasklet+0xcb/0x130 [ath9k]
    
    Bug report:
    https://bugzilla.kernel.org/show_bug.cgi?id=70551
    
    Reported-and-tested-by: Max Sydorenko <maxim.stargazer@gmail.com>
    Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
    Signed-off-by: John W. Linville <linville@tuxdriver.com>
    [ xl: backported to 3.10: adjusted context ]
    Signed-off-by: Xiangyu Lu <luxiangyu@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3c3fa08f4c7770ad35bb10755fb9b1c80e34dee4
Author: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
Date:   Sat Apr 26 12:51:31 2014 -0300

    media: V4L2: fix VIDIOC_CREATE_BUFS in 64- / 32-bit compatibility mode
    
    commit 97d9d23dda6f37d90aefeec4ed619d52df525382 upstream.
    
    If a struct contains 64-bit fields, it is aligned on 64-bit boundaries
    within containing structs in 64-bit compilations. This is the case with
    struct v4l2_window, which contains pointers and is embedded into struct
    v4l2_format, and that one is embedded into struct v4l2_create_buffers.
    Unlike some other structs, used as a part of the kernel ABI as ioctl()
    arguments, that are packed, these structs aren't packed. This isn't a
    problem per se, but the ioctl-compat code for VIDIOC_CREATE_BUFS contains
    a bug, that triggers in such 64-bit builds. That code wrongly assumes,
    that in struct v4l2_create_buffers, struct v4l2_format immediately follows
    the __u32 memory field, which in fact isn't the case. This bug wasn't
    visible until now, because until recently hardly any applications used
    this ioctl() and mostly embedded 32-bit only drivers implemented it. This
    is changing now with addition of this ioctl() to some USB drivers, e.g.
    UVC. This patch fixes the bug by copying parts of struct
    v4l2_create_buffers separately.
    
    Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
    Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
    Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2e008074b2f19ba550393e3a33334fd1dd5da082
Author: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
Date:   Mon Apr 14 10:49:34 2014 -0300

    media: V4L2: ov7670: fix a wrong index, potentially Oopsing the kernel from user-space
    
    commit cfece5857ca51d1dcdb157017aba226f594e9dcf upstream.
    
    Commit 75e2bdad8901a0b599e01a96229be922eef1e488 "ov7670: allow
    configuration of image size, clock speed, and I/O method" uses a wrong
    index to iterate an array. Apart from being wrong, it also uses an
    unchecked value from user-space, which can cause access to unmapped
    memory in the kernel, triggered by a normal desktop user with rights to
    use V4L2 devices.
    
    Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
    Acked-by: Jonathan Corbet <corbet@lwn.net>
    Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4f792a2972e6f320484abfc940f978177131facc
Author: Antti Palosaari <crope@iki.fi>
Date:   Thu Apr 10 21:18:16 2014 -0300

    media: fc2580: fix tuning failure on 32-bit arch
    
    commit 8845cc6415ec28ef8d57b3fb81c75ef9bce69c5f upstream.
    
    There was some frequency calculation overflows which caused tuning
    failure on 32-bit architecture. Use 64-bit numbers where needed in
    order to avoid calculation overflows.
    
    Thanks for the Finnish person, who asked remain anonymous, reporting,
    testing and suggesting the fix.
    
    Signed-off-by: Antti Palosaari <crope@iki.fi>
    Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0a4e3565df0c91bf0f7a68dee09e45c9d9b2d360
Author: Alex Williamson <alex.williamson@redhat.com>
Date:   Tue Apr 22 10:08:40 2014 -0600

    iommu/amd: Fix interrupt remapping for aliased devices
    
    commit e028a9e6b8a637af09ac4114083280df4a7045f1 upstream.
    
    An apparent cut and paste error prevents the correct flags from being
    set on the alias device resulting in MSI on conventional PCI devices
    failing to work.  This also produces error events from the IOMMU like:
    
    AMD-Vi: Event logged [INVALID_DEVICE_REQUEST device=00:14.4 address=0x000000fdf8000000 flags=0x0a00]
    
    Where 14.4 is a PCIe-to-PCI bridge with a device behind it trying to
    use MSI interrupts.
    
    Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
    Signed-off-by: Joerg Roedel <joro@8bytes.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a757a4e215574f2c92fc990275fa5e02159771e1
Author: Chunwei Chen <tuxoko@gmail.com>
Date:   Wed Apr 23 12:35:09 2014 +0800

    libceph: fix corruption when using page_count 0 page in rbd
    
    commit 178eda29ca721842f2146378e73d43e0044c4166 upstream.
    
    It has been reported that using ZFSonLinux on rbd will result in memory
    corruption. The bug report can be found here:
    
    https://github.com/zfsonlinux/spl/issues/241
    http://tracker.ceph.com/issues/7790
    
    The reason is that ZFS will send pages with page_count 0 into rbd, which in
    turns send them to tcp_sendpage. However, tcp_sendpage cannot deal with
    page_count 0, as it will do get_page and put_page, and erroneously free the
    page.
    
    This type of issue has been noted before, and handled in iscsi, drbd,
    etc. So, rbd should also handle this. This fix address this issue by fall back
    to slower sendmsg when page_count 0 detected.
    
    Cc: Sage Weil <sage@inktank.com>
    Cc: Yehuda Sadeh <yehuda@inktank.com>
    Signed-off-by: Chunwei Chen <tuxoko@gmail.com>
    Reviewed-by: Ilya Dryomov <ilya.dryomov@inktank.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 534cc5572c710370d2bfe4e6b382950fd52c2c00
Author: Guenter Roeck <linux@roeck-us.net>
Date:   Thu May 15 09:33:42 2014 -0700

    powerpc: Fix 64 bit builds with binutils 2.24
    
    commit 7998eb3dc700aaf499f93f50b3d77da834ef9e1d upstream.
    
    With binutils 2.24, various 64 bit builds fail with relocation errors
    such as
    
    arch/powerpc/kernel/built-in.o: In function `exc_debug_crit_book3e':
    	(.text+0x165ee): relocation truncated to fit: R_PPC64_ADDR16_HI
    	against symbol `interrupt_base_book3e' defined in .text section
    	in arch/powerpc/kernel/built-in.o
    arch/powerpc/kernel/built-in.o: In function `exc_debug_crit_book3e':
    	(.text+0x16602): relocation truncated to fit: R_PPC64_ADDR16_HI
    	against symbol `interrupt_end_book3e' defined in .text section
    	in arch/powerpc/kernel/built-in.o
    
    The assembler maintainer says:
    
     I changed the ABI, something that had to be done but unfortunately
     happens to break the booke kernel code.  When building up a 64-bit
     value with lis, ori, shl, oris, ori or similar sequences, you now
     should use @high and @higha in place of @h and @ha.  @h and @ha
     (and their associated relocs R_PPC64_ADDR16_HI and R_PPC64_ADDR16_HA)
     now report overflow if the value is out of 32-bit signed range.
     ie. @h and @ha assume you're building a 32-bit value. This is needed
     to report out-of-range -mcmodel=medium toc pointer offsets in @toc@h
     and @toc@ha expressions, and for consistency I did the same for all
     other @h and @ha relocs.
    
    Replacing @h with @high in one strategic location fixes the relocation
    errors. This has to be done conditionally since the assembler either
    supports @h or @high but not both.
    
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c99612d30ffcdf6ff41281a84e8df2a56c8b7d20
Author: Harald Freudenberger <freude@linux.vnet.ibm.com>
Date:   Wed May 7 16:51:29 2014 +0200

    crypto: s390 - fix aes,des ctr mode concurrency finding.
    
    commit 3901c1124ec5099254a9396085f7798153a7293f upstream.
    
    An additional testcase found an issue with the last
    series of patches applied: the fallback solution may
    not save the iv value after operation. This very small
    fix just makes sure the iv is copied back to the
    walk/desc struct.
    
    Signed-off-by: Harald Freudenberger <freude@linux.vnet.ibm.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d1ae1920b53e00849397c3f6f63dace219de46a0
Author: Horia Geanta <horia.geanta@freescale.com>
Date:   Fri Apr 18 13:01:42 2014 +0300

    crypto: caam - add allocation failure handling in SPRINTFCAT macro
    
    commit 27c5fb7a84242b66bf1e0b2fe6bf40d19bcc5c04 upstream.
    
    GFP_ATOMIC memory allocation could fail.
    In this case, avoid NULL pointer dereference and notify user.
    
    Cc: Kim Phillips <kim.phillips@freescale.com>
    Signed-off-by: Horia Geanta <horia.geanta@freescale.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a0d3102153fc5d9cf8bb49b62ac9655f9f63b493
Author: Olof Johansson <olof@lixom.net>
Date:   Fri Apr 11 15:19:41 2014 -0700

    i2c: s3c2410: resume race fix
    
    commit ce78cc071f5f541480e381cc0241d37590041a9d upstream.
    
    Don't unmark the device as suspended until after it's been re-setup.
    
    The main race would be w.r.t. an i2c driver that gets resumed at the same
    time (asyncronously), that is allowed to do a transfer since suspended
    is set to 0 before reinit, but really should have seen the -EIO return
    instead.
    
    Signed-off-by: Olof Johansson <olof@lixom.net>
    Signed-off-by: Doug Anderson <dianders@chromium.org>
    Acked-by: Kukjin Kim <kgene.kim@samsung.com>
    Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a6b6cde1481125b886f726756a3364be0fb9f93e
Author: Du, Wenkai <wenkai.du@intel.com>
Date:   Thu Apr 10 23:03:19 2014 +0000

    i2c: designware: Mask all interrupts during i2c controller enable
    
    commit 47bb27e78867997040a228328f2a631c3c7f2c82 upstream.
    
    There have been "i2c_designware 80860F41:00: controller timed out" errors
    on a number of Baytrail platforms. The issue is caused by incorrect value in
    Interrupt Mask Register (DW_IC_INTR_MASK)  when i2c core is being enabled.
    This causes call to __i2c_dw_enable() to immediately start the transfer which
    leads to timeout. There are 3 failure modes observed:
    
    1. Failure in S0 to S3 resume path
    
    The default value after reset for DW_IC_INTR_MASK is 0x8ff. When we start
    the first transaction after resuming from system sleep, TX_EMPTY interrupt
    is already unmasked because of the hardware default.
    
    2. Failure in normal operational path
    
    This failure happens rarely and is hard to reproduce. Debug trace showed that
    DW_IC_INTR_MASK had value of 0x254 when failure occurred, which meant
    TX_EMPTY was unmasked.
    
    3. Failure in S3 to S0 suspend path
    
    This failure also happens rarely and is hard to reproduce. Adding debug trace
    that read DW_IC_INTR_MASK made this failure not reproducible. But from ISR
    call trace we could conclude TX_EMPTY was unmasked when problem occurred.
    
    The patch masks all interrupts before the controller is enabled to resolve the
    faulty DW_IC_INTR_MASK conditions.
    
    Signed-off-by: Wenkai Du <wenkai.du@intel.com>
    Acked-by: Mika Westerberg <mika.westerberg@linux.intel.com>
    [wsa: improved the comment and removed typo in commit msg]
    Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 670a6ed522e0fa814d74547cb95fbc4854660474
Author: Wolfram Sang <wsa+renesas@sang-engineering.com>
Date:   Mon May 5 18:36:21 2014 +0200

    i2c: rcar: bail out on zero length transfers
    
    commit d7653964c590ba846aa11a8f6edf409773cbc492 upstream.
    
    This hardware does not support zero length transfers. Instead, the
    driver does one (random) byte transfers currently with undefined results
    for the slaves. We now bail out.
    
    Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
    Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit feed5a88f45f26e4fda34838b4929536d4a8e775
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Mon May 5 11:38:09 2014 +0200

    ACPI / blacklist: Add dmi_enable_osi_linux quirk for Asus EEE PC 1015PX
    
    commit f6e6e1b9fee88c90586787b71dc49bb3ce62bb89 upstream.
    
    Without this this EEE PC exports a non working WMI interface, with this it
    exports a working "good old" eeepc_laptop interface, fixing brightness control
    not working as well as rfkill being stuck in a permanent wireless blocked
    state.
    
    This is not an ideal way to fix this, but various attempts to fix this
    otherwise have failed, see:
    
    References: https://bugzilla.redhat.com/show_bug.cgi?id=1067181
    Reported-and-tested-by: lou.cardone@gmail.com
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a40aac07285bdf77ed67af1423676ff5548ef51b
Author: Levente Kurusa <levex@linux.com>
Date:   Tue May 6 15:57:48 2014 +0200

    libata: clean up ZPODD when a port is detached
    
    commit a6f9bf4d2f965b862b95213303d154e02957eed8 upstream.
    
    When a ZPODD device is unbound via sysfs, the ACPI notify handler
    is not removed. This causes panics as observed in Bug #74601. The
    panic only happens when the wake happens from outside the kernel
    (i.e. inserting a media or pressing a button). Add a loop to
    ata_port_detach which loops through the port's devices and checks
    if zpodd is enabled, if so call zpodd_exit.
    
    Reviewed-by: Aaron Lu <aaron.lu@intel.com>
    Signed-off-by: Levente Kurusa <levex@linux.com>
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 019c8ec9e3c6a3616f10be9eda359f1927d1f8b1
Author: Mikulas Patocka <mpatocka@redhat.com>
Date:   Thu Feb 20 18:01:01 2014 -0500

    dm crypt: fix cpu hotplug crash by removing per-cpu structure
    
    commit 610f2de3559c383caf8fbbf91e9968102dff7ca0 upstream.
    
    The DM crypt target used per-cpu structures to hold pointers to a
    ablkcipher_request structure.  The code assumed that the work item keeps
    executing on a single CPU, so it didn't use synchronization when
    accessing this structure.
    
    If a CPU is disabled by writing 0 to /sys/devices/system/cpu/cpu*/online,
    the work item could be moved to another CPU.  This causes dm-crypt
    crashes, like the following, because the code starts using an incorrect
    ablkcipher_request:
    
     smpboot: CPU 7 is now offline
     BUG: unable to handle kernel NULL pointer dereference at 0000000000000130
     IP: [<ffffffffa1862b3d>] crypt_convert+0x12d/0x3c0 [dm_crypt]
     ...
     Call Trace:
      [<ffffffffa1864415>] ? kcryptd_crypt+0x305/0x470 [dm_crypt]
      [<ffffffff81062060>] ? finish_task_switch+0x40/0xc0
      [<ffffffff81052a28>] ? process_one_work+0x168/0x470
      [<ffffffff8105366b>] ? worker_thread+0x10b/0x390
      [<ffffffff81053560>] ? manage_workers.isra.26+0x290/0x290
      [<ffffffff81058d9f>] ? kthread+0xaf/0xc0
      [<ffffffff81058cf0>] ? kthread_create_on_node+0x120/0x120
      [<ffffffff813464ac>] ? ret_from_fork+0x7c/0xb0
      [<ffffffff81058cf0>] ? kthread_create_on_node+0x120/0x120
    
    Fix this bug by removing the per-cpu definition.  The structure
    ablkcipher_request is accessed via a pointer from convert_context.
    Consequently, if the work item is rescheduled to a different CPU, the
    thread still uses the same ablkcipher_request.
    
    This change may undermine performance improvements intended by commit
    c0297721 ("dm crypt: scale to multiple cpus") on select hardware.  In
    practice no performance difference was observed on recent hardware.  But
    regardless, correctness is more important than performance.
    
    Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
    Signed-off-by: Mike Snitzer <snitzer@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit aece4fa7368debd14ac07ebaf569587ff02cc596
Author: Michael Neuling <mikey@neuling.org>
Date:   Mon Mar 3 14:21:40 2014 +1100

    powerpc/tm: Fix crash when forking inside a transaction
    
    commit 621b5060e823301d0cba4cb52a7ee3491922d291 upstream.
    
    When we fork/clone we currently don't copy any of the TM state to the new
    thread.  This results in a TM bad thing (program check) when the new process is
    switched in as the kernel does a tmrechkpt with TEXASR FS not set.  Also, since
    R1 is from userspace, we trigger the bad kernel stack pointer detection.  So we
    end up with something like this:
    
       Bad kernel stack pointer 0 at c0000000000404fc
       cpu 0x2: Vector: 700 (Program Check) at [c00000003ffefd40]
           pc: c0000000000404fc: restore_gprs+0xc0/0x148
           lr: 0000000000000000
           sp: 0
          msr: 9000000100201030
         current = 0xc000001dd1417c30
         paca    = 0xc00000000fe00800   softe: 0        irq_happened: 0x01
           pid   = 0, comm = swapper/2
       WARNING: exception is not recoverable, can't continue
    
    The below fixes this by flushing the TM state before we copy the task_struct to
    the clone.  To do this we go through the tmreclaim patch, which removes the
    checkpointed registers from the CPU and transitions the CPU out of TM suspend
    mode.  Hence we need to call tmrechkpt after to restore the checkpointed state
    and the TM mode for the current task.
    
    To make this fail from userspace is simply:
    	tbegin
    	li	r0, 2
    	sc
    	<boom>
    
    Kudos to Adhemerval Zanella Neto for finding this.
    
    Signed-off-by: Michael Neuling <mikey@neuling.org>
    cc: Adhemerval Zanella Neto <azanella@br.ibm.com>
    Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
    [Backported to 3.10: context adjust]
    Signed-off-by: Xue Liu <liuxueliu.liu@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c9d6d5c009e96eb257d36b5c43d9c2d94f02cbf8
Author: Andy Grover <agrover@redhat.com>
Date:   Wed May 14 15:48:06 2014 -0700

    target: Don't allow setting WC emulation if device doesn't support
    
    commit 07b8dae38b09bcfede7e726f172e39b5ce8390d9 upstream.
    
    Just like for pSCSI, if the transport sets get_write_cache, then it is
    not valid to enable write cache emulation for it. Return an error.
    
    see https://bugzilla.redhat.com/show_bug.cgi?id=1082675
    
    Reviewed-by: Chris Leech <cleech@redhat.com>
    Signed-off-by: Andy Grover <agrover@redhat.com>
    Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8a2629ad0ba7902262df7ae980265d8f93e2dfc2
Author: Sagi Grimberg <sagig@mellanox.com>
Date:   Tue Apr 29 13:13:45 2014 +0300

    Target/iser: Fix iscsit_accept_np and rdma_cm racy flow
    
    commit 531b7bf4bd795d9a09eac92504322a472c010bc8 upstream.
    
    RDMA CM and iSCSI target flows are asynchronous and completely
    uncorrelated. Relying on the fact that iscsi_accept_np will be called
    after CM connection request event and will wait for it is a mistake.
    
    When attempting to login to a few targets this flow is racy and
    unpredictable, but for parallel login to dozens of targets will
    race and hang every time.
    
    The correct synchronizing mechanism in this case is pending on
    a semaphore rather than a wait_for_event. We keep the pending
    interruptible for iscsi_np cleanup stage.
    
    (Squash patch to remove dead code into parent - nab)
    
    Reported-by: Slava Shwartsman <valyushash@gmail.com>
    Signed-off-by: Sagi Grimberg <sagig@mellanox.com>
    Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5de94f8f4acfce3ff79592cb1d6c58ae6c0b420e
Author: Sagi Grimberg <sagig@mellanox.com>
Date:   Tue Apr 29 13:13:44 2014 +0300

    Target/iser: Fix wrong connection requests list addition
    
    commit 9fe63c88b1d59f1ce054d6948ccd3096496ecedb upstream.
    
    Should be adding list_add_tail($new, $head) and not
    the other way around.
    
    Signed-off-by: Sagi Grimberg <sagig@mellanox.com>
    Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d0e845f6565ceed9ff36b95ac68cf705b97a5844
Author: Marcel Apfelbaum <marcel.a@redhat.com>
Date:   Thu May 15 12:42:49 2014 -0600

    PCI: shpchp: Check bridge's secondary (not primary) bus speed
    
    commit 93fa9d32670f5592c8e56abc9928fc194e1e72fc upstream.
    
    When a new device is added below a hotplug bridge, the bridge's secondary
    bus speed and the device's bus speed must match.  The shpchp driver
    previously checked the bridge's *primary* bus speed, not the secondary bus
    speed.
    
    This caused hot-add errors like:
    
      shpchp 0000:00:03.0: Speed of bus ff and adapter 0 mismatch
    
    Check the secondary bus speed instead.
    
    [bhelgaas: changelog]
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=75251
    Fixes: 3749c51ac6c1 ("PCI: Make current and maximum bus speeds part of the PCI core")
    Signed-off-by: Marcel Apfelbaum <marcel.a@redhat.com>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Acked-by: Michael S. Tsirkin <mst@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 55d9b08514ede9334e443337e9bf6181a3f8b114
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Wed Apr 23 14:49:17 2014 +0200

    genirq: Provide irq_force_affinity fallback for non-SMP
    
    commit 4c88d7f9b0d5fb0588c3386be62115cc2eaa8f9f upstream.
    
    Patch 01f8fa4f01d "genirq: Allow forcing cpu affinity of interrupts" added
    an irq_force_affinity() function, and 30ccf03b4a6 "clocksource: Exynos_mct:
    Use irq_force_affinity() in cpu bringup" subsequently uses it. However, the
    driver can be used with CONFIG_SMP disabled, but the function declaration
    is only available for CONFIG_SMP, leading to this build error:
    
    drivers/clocksource/exynos_mct.c:431:3: error: implicit declaration of function 'irq_force_affinity' [-Werror=implicit-function-declaration]
       irq_force_affinity(mct_irqs[MCT_L0_IRQ + cpu], cpumask_of(cpu));
    
    This patch introduces a dummy helper function for the non-SMP case
    that always returns success, to get rid of the build error.
    Since the patches causing the problem are marked for stable backports,
    this one should be as well.
    
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Cc: Krzysztof Kozlowski <k.kozlowski@samsung.com>
    Acked-by: Kukjin Kim <kgene.kim@samsung.com>
    Link: http://lkml.kernel.org/r/5619084.0zmrrIUZLV@wuerfel
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 62dcb5801ac032188a20dc45e6d7b682a028adcf
Author: Linus Torvalds <torvalds@linux-foundation.org>
Date:   Wed May 14 16:33:54 2014 -0700

    x86-64, modify_ldt: Make support for 16-bit segments a runtime option
    
    commit fa81511bb0bbb2b1aace3695ce869da9762624ff upstream.
    
    Checkin:
    
    b3b42ac2cbae x86-64, modify_ldt: Ban 16-bit segments on 64-bit kernels
    
    disabled 16-bit segments on 64-bit kernels due to an information
    leak.  However, it does seem that people are genuinely using Wine to
    run old 16-bit Windows programs on Linux.
    
    A proper fix for this ("espfix64") is coming in the upcoming merge
    window, but as a temporary fix, create a sysctl to allow the
    administrator to re-enable support for 16-bit segments.
    
    It adds a "/proc/sys/abi/ldt16" sysctl that defaults to zero (off). If
    you hit this issue and care about your old Windows program more than
    you care about a kernel stack address information leak, you can do
    
       echo 1 > /proc/sys/abi/ldt16
    
    as root (add it to your startup scripts), and you should be ok.
    
    The sysctl table is only added if you have COMPAT support enabled on
    x86-64, but I assume anybody who runs old windows binaries very much
    does that ;)
    
    Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
    Link: http://lkml.kernel.org/r/CA%2B55aFw9BPoD10U1LfHbOMpHWZkvJTkMcfCs9s3urPr1YyWBxw@mail.gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 56ecdc3d9e5b91f411e6f3ba63229d332b54af8e
Author: James Hogan <james.hogan@imgtec.com>
Date:   Tue May 13 23:58:24 2014 +0100

    metag: Reduce maximum stack size to 256MB
    
    commit d71f290b4e98a39f49f2595a13be3b4d5ce8e1f1 upstream.
    
    Specify the maximum stack size for arches where the stack grows upward
    (parisc and metag) in asm/processor.h rather than hard coding in
    fs/exec.c so that metag can specify a smaller value of 256MB rather than
    1GB.
    
    This fixes a BUG on metag if the RLIMIT_STACK hard limit is increased
    beyond a safe value by root. E.g. when starting a process after running
    "ulimit -H -s unlimited" it will then attempt to use a stack size of the
    maximum 1GB which is far too big for metag's limited user virtual
    address space (stack_top is usually 0x3ffff000):
    
    BUG: failure at fs/exec.c:589/shift_arg_pages()!
    
    Signed-off-by: James Hogan <james.hogan@imgtec.com>
    Cc: Helge Deller <deller@gmx.de>
    Cc: "James E.J. Bottomley" <jejb@parisc-linux.org>
    Cc: linux-parisc@vger.kernel.org
    Cc: linux-metag@vger.kernel.org
    Cc: John David Anglin <dave.anglin@bell.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 44563045712ee4f385b5f3814d69fc73b5f22288
Author: Mikulas Patocka <mpatocka@redhat.com>
Date:   Thu May 8 15:51:37 2014 -0400

    metag: fix memory barriers
    
    commit 2425ce84026c385b73ae72039f90d042d49e0394 upstream.
    
    Volatile access doesn't really imply the compiler barrier. Volatile access
    is only ordered with respect to other volatile accesses, it isn't ordered
    with respect to general memory accesses. Gcc may reorder memory accesses
    around volatile access, as we can see in this simple example (if we
    compile it with optimization, both increments of *b will be collapsed to
    just one):
    
    void fn(volatile int *a, long *b)
    {
    	(*b)++;
    	*a = 10;
    	(*b)++;
    }
    
    Consequently, we need the compiler barrier after a write to the volatile
    variable, to make sure that the compiler doesn't reorder the volatile
    write with something else.
    
    Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
    Acked-by: Peter Zijlstra <peterz@infradead.org>
    Signed-off-by: James Hogan <james.hogan@imgtec.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit aece7dc95409f8934281954a7e82ddf55b765913
Author: Charles Keepax <ckeepax@opensource.wolfsonmicro.com>
Date:   Tue May 13 13:45:15 2014 +0100

    ASoC: wm8962: Update register CLASS_D_CONTROL_1 to be non-volatile
    
    commit 44330ab516c15dda8a1e660eeaf0003f84e43e3f upstream.
    
    The register CLASS_D_CONTROL_1 is marked as volatile because it contains
    a bit, DAC_MUTE, which is also mirrored in the ADC_DAC_CONTROL_1
    register. This causes problems for the "Speaker Switch" control, which
    will report an error if the CODEC is suspended because it relies on a
    volatile register.
    
    To resolve this issue mark CLASS_D_CONTROL_1 as non-volatile and
    manually keep the register cache in sync by updating both bits when
    changing the mute status.
    
    Reported-by: Shawn Guo <shawn.guo@linaro.org>
    Signed-off-by: Charles Keepax <ckeepax@opensource.wolfsonmicro.com>
    Tested-by: Shawn Guo <shawn.guo@linaro.org>
    Signed-off-by: Mark Brown <broonie@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d642daf637d02dacf216d7fd9da7532a4681cfd3
Author: Roger Pau Monne <roger.pau@citrix.com>
Date:   Tue Oct 29 18:31:14 2013 +0100

    xen-blkfront: restore the non-persistent data path
    
    commit bfe11d6de1c416cea4f3f0f35f864162063ce3fa upstream.
    
    When persistent grants were added they were always used, even if the
    backend doesn't have this feature (there's no harm in always using the
    same set of pages). This restores the old data path when the backend
    doesn't have persistent grants, removing the burden of doing a memcpy
    when it is not actually needed.
    
    Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
    Reported-by: Felipe Franciosi <felipe.franciosi@citrix.com>
    Cc: Felipe Franciosi <felipe.franciosi@citrix.com>
    Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
    Cc: David Vrabel <david.vrabel@citrix.com>
    Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
    [v2: Fix up whitespace issues]
    Tested-by: Felipe Franciosi <felipe@paradoxo.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ba4abe2e7f32f6d7fe3d92eeb4b1748c10b5f601
Author: Roger Pau Monne <roger.pau@citrix.com>
Date:   Mon Aug 12 12:53:44 2013 +0200

    xen-blkfront: revoke foreign access for grants not mapped by the backend
    
    commit fbe363c476afe8ec992d3baf682670a4bd1b6ce6 upstream.
    
    There's no need to keep the foreign access in a grant if it is not
    persistently mapped by the backend. This allows us to free grants that
    are not mapped by the backend, thus preventing blkfront from hoarding
    all grants.
    
    The main effect of this is that blkfront will only persistently map
    the same grants as the backend, and it will always try to use grants
    that are already mapped by the backend. Also the number of persistent
    grants in blkfront is the same as in blkback (and is controlled by the
    value in blkback).
    
    Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
    Reviewed-by: David Vrabel <david.vrabel@citrix.com>
    Acked-by: Matt Wilson <msw@amazon.com>
    Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
    Cc: David Vrabel <david.vrabel@citrix.com>
    Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 46c0326164c98e556c35c3eb240273595d43425d
Author: Jianyu Zhan <nasa4836@gmail.com>
Date:   Mon Apr 14 13:47:40 2014 +0800

    percpu: make pcpu_alloc_chunk() use pcpu_mem_free() instead of kfree()
    
    commit 5a838c3b60e3a36ade764cf7751b8f17d7c9c2da upstream.
    
    pcpu_chunk_struct_size = sizeof(struct pcpu_chunk) +
    	BITS_TO_LONGS(pcpu_unit_pages) * sizeof(unsigned long)
    
    It hardly could be ever bigger than PAGE_SIZE even for large-scale machine,
    but for consistency with its couterpart pcpu_mem_zalloc(),
    use pcpu_mem_free() instead.
    
    Commit b4916cb17c26 ("percpu: make pcpu_free_chunk() use
    pcpu_mem_free() instead of kfree()") addressed this problem, but
    missed this one.
    
    tj: commit message updated
    
    Signed-off-by: Jianyu Zhan <nasa4836@gmail.com>
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Fixes: 099a19d91ca4 ("percpu: allow limited allocation before slab is online)
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 19d65166742f901cc14290494560f6b224cd2d2b
Author: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Date:   Fri Apr 18 14:19:52 2014 +0200

    bus: mvebu-mbus: allow several windows with the same target/attribute
    
    commit b566e782be32145664d96ada3e389f17d32742e5 upstream.
    
    Having multiple windows with the same target and attribute is actually
    legal, and can be useful for PCIe windows, when PCIe BARs have a size
    that isn't a power of two, and we therefore need to create several
    MBus windows to cover the PCIe BAR for a given PCIe interface.
    
    Fixes: fddddb52a6c4 ('bus: introduce an Marvell EBU MBus driver')
    Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
    Link: https://lkml.kernel.org/r/1397823593-1932-7-git-send-email-thomas.petazzoni@free-electrons.com
    Tested-by: Neil Greatorex <neil@fatboyfat.co.uk>
    Signed-off-by: Jason Cooper <jason@lakedaemon.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f56fb0d42b47b87b12c4936a77429d9dd1c7c4c6
Author: Lai Jiangshan <laijs@cn.fujitsu.com>
Date:   Fri Apr 18 11:04:16 2014 -0400

    workqueue: make rescuer_thread() empty wq->maydays list before exiting
    
    commit 4d595b866d2c653dc90a492b9973a834eabfa354 upstream.
    
    After a @pwq is scheduled for emergency execution, other workers may
    consume the affectd work items before the rescuer gets to them.  This
    means that a workqueue many have pwqs queued on @wq->maydays list
    while not having any work item pending or in-flight.  If
    destroy_workqueue() executes in such condition, the rescuer may exit
    without emptying @wq->maydays.
    
    This currently doesn't cause any actual harm.  destroy_workqueue() can
    safely destroy all the involved data structures whether @wq->maydays
    is populated or not as nobody access the list once the rescuer exits.
    
    However, this is nasty and makes future development difficult.  Let's
    update rescuer_thread() so that it empties @wq->maydays after seeing
    should_stop to guarantee that the list is empty on rescuer exit.
    
    tj: Updated comment and patch description.
    
    Signed-off-by: Lai Jiangshan <laijs@cn.fujitsu.com>
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit aac8b37ffaa2bacc0430aa7b45c7d3aad22209fc
Author: Lai Jiangshan <laijs@cn.fujitsu.com>
Date:   Fri Apr 18 11:04:16 2014 -0400

    workqueue: fix a possible race condition between rescuer and pwq-release
    
    commit 77668c8b559e4fe2acf2a0749c7c83cde49a5025 upstream.
    
    There is a race condition between rescuer_thread() and
    pwq_unbound_release_workfn().
    
    Even after a pwq is scheduled for rescue, the associated work items
    may be consumed by any worker.  If all of them are consumed before the
    rescuer gets to them and the pwq's base ref was put due to attribute
    change, the pwq may be released while still being linked on
    @wq->maydays list making the rescuer dereference already freed pwq
    later.
    
    Make send_mayday() pin the target pwq until the rescuer is done with
    it.
    
    tj: Updated comment and patch description.
    
    Signed-off-by: Lai Jiangshan <laijs@cn.fujitsu.com>
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 55a3dfcc84ab3dc82708d93cd0bca4a0aad7715c
Author: Daeseok Youn <daeseok.youn@gmail.com>
Date:   Wed Apr 16 14:32:29 2014 +0900

    workqueue: fix bugs in wq_update_unbound_numa() failure path
    
    commit 77f300b198f93328c26191b52655ce1b62e202cf upstream.
    
    wq_update_unbound_numa() failure path has the following two bugs.
    
    - alloc_unbound_pwq() is called without holding wq->mutex; however, if
      the allocation fails, it jumps to out_unlock which tries to unlock
      wq->mutex.
    
    - The function should switch to dfl_pwq on failure but didn't do so
      after alloc_unbound_pwq() failure.
    
    Fix it by regrabbing wq->mutex and jumping to use_dfl_pwq on
    alloc_unbound_pwq() failure.
    
    Signed-off-by: Daeseok Youn <daeseok.youn@gmail.com>
    Acked-by: Lai Jiangshan <laijs@cn.fujitsu.com>
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Fixes: 4c16bd327c74 ("workqueue: implement NUMA affinity for unbound workqueues")
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 04931ac044a638b79ea3c4b48c448b66cae0c2b5
Author: J. Bruce Fields <bfields@redhat.com>
Date:   Tue May 20 15:55:21 2014 -0400

    nfsd4: remove lockowner when removing lock stateid
    
    commit a1b8ff4c97b4375d21b6d6c45d75877303f61b3b upstream.
    
    The nfsv4 state code has always assumed a one-to-one correspondance
    between lock stateid's and lockowners even if it appears not to in some
    places.
    
    We may actually change that, but for now when FREE_STATEID releases a
    lock stateid it also needs to release the parent lockowner.
    
    Symptoms were a subsequent LOCK crashing in find_lockowner_str when it
    calls same_lockowner_ino on a lockowner that unexpectedly has an empty
    so_stateids list.
    
    Signed-off-by: J. Bruce Fields <bfields@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 02016987ba67614366a3d7cbd58b401ca956f816
Author: J. Bruce Fields <bfields@redhat.com>
Date:   Thu May 8 11:19:41 2014 -0400

    nfsd4: warn on finding lockowner without stateid's
    
    commit 27b11428b7de097c42f205beabb1764f4365443b upstream.
    
    The current code assumes a one-to-one lockowner<->lock stateid
    correspondance.
    
    Signed-off-by: J. Bruce Fields <bfields@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 53a3b8bea5827a9f647f411d9230e563e745c58c
Author: Kinglong Mee <kinglongmee@gmail.com>
Date:   Fri Apr 18 20:49:04 2014 +0800

    NFSD: Call ->set_acl with a NULL ACL structure if no entries
    
    commit aa07c713ecfc0522916f3cd57ac628ea6127c0ec upstream.
    
    After setting ACL for directory, I got two problems that caused
    by the cached zero-length default posix acl.
    
    This patch make sure nfsd4_set_nfs4_acl calls ->set_acl
    with a NULL ACL structure if there are no entries.
    
    Thanks for Christoph Hellwig's advice.
    
    First problem:
    ............ hang ...........
    
    Second problem:
    [ 1610.167668] ------------[ cut here ]------------
    [ 1610.168320] kernel BUG at /root/nfs/linux/fs/nfsd/nfs4acl.c:239!
    [ 1610.168320] invalid opcode: 0000 [#1] SMP DEBUG_PAGEALLOC
    [ 1610.168320] Modules linked in: nfsv4(OE) nfs(OE) nfsd(OE)
    rpcsec_gss_krb5 fscache ip6t_rpfilter ip6t_REJECT cfg80211 xt_conntrack
    rfkill ebtable_nat ebtable_broute bridge stp llc ebtable_filter ebtables
    ip6table_nat nf_conntrack_ipv6 nf_defrag_ipv6 nf_nat_ipv6
    ip6table_mangle ip6table_security ip6table_raw ip6table_filter
    ip6_tables iptable_nat nf_conntrack_ipv4 nf_defrag_ipv4 nf_nat_ipv4
    nf_nat nf_conntrack iptable_mangle iptable_security iptable_raw
    auth_rpcgss nfs_acl snd_intel8x0 ppdev lockd snd_ac97_codec ac97_bus
    snd_pcm snd_timer e1000 pcspkr parport_pc snd parport serio_raw joydev
    i2c_piix4 sunrpc(OE) microcode soundcore i2c_core ata_generic pata_acpi
    [last unloaded: nfsd]
    [ 1610.168320] CPU: 0 PID: 27397 Comm: nfsd Tainted: G           OE
    3.15.0-rc1+ #15
    [ 1610.168320] Hardware name: innotek GmbH VirtualBox/VirtualBox, BIOS
    VirtualBox 12/01/2006
    [ 1610.168320] task: ffff88005ab653d0 ti: ffff88005a944000 task.ti:
    ffff88005a944000
    [ 1610.168320] RIP: 0010:[<ffffffffa034d5ed>]  [<ffffffffa034d5ed>]
    _posix_to_nfsv4_one+0x3cd/0x3d0 [nfsd]
    [ 1610.168320] RSP: 0018:ffff88005a945b00  EFLAGS: 00010293
    [ 1610.168320] RAX: 0000000000000001 RBX: ffff88006700bac0 RCX:
    0000000000000000
    [ 1610.168320] RDX: 0000000000000000 RSI: ffff880067c83f00 RDI:
    ffff880068233300
    [ 1610.168320] RBP: ffff88005a945b48 R08: ffffffff81c64830 R09:
    0000000000000000
    [ 1610.168320] R10: ffff88004ea85be0 R11: 000000000000f475 R12:
    ffff880068233300
    [ 1610.168320] R13: 0000000000000003 R14: 0000000000000002 R15:
    ffff880068233300
    [ 1610.168320] FS:  0000000000000000(0000) GS:ffff880077800000(0000)
    knlGS:0000000000000000
    [ 1610.168320] CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b
    [ 1610.168320] CR2: 00007f5bcbd3b0b9 CR3: 0000000001c0f000 CR4:
    00000000000006f0
    [ 1610.168320] DR0: 0000000000000000 DR1: 0000000000000000 DR2:
    0000000000000000
    [ 1610.168320] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7:
    0000000000000400
    [ 1610.168320] Stack:
    [ 1610.168320]  ffffffff00000000 0000000b67c83500 000000076700bac0
    0000000000000000
    [ 1610.168320]  ffff88006700bac0 ffff880068233300 ffff88005a945c08
    0000000000000002
    [ 1610.168320]  0000000000000000 ffff88005a945b88 ffffffffa034e2d5
    000000065a945b68
    [ 1610.168320] Call Trace:
    [ 1610.168320]  [<ffffffffa034e2d5>] nfsd4_get_nfs4_acl+0x95/0x150 [nfsd]
    [ 1610.168320]  [<ffffffffa03400d6>] nfsd4_encode_fattr+0x646/0x1e70 [nfsd]
    [ 1610.168320]  [<ffffffff816a6e6e>] ? kmemleak_alloc+0x4e/0xb0
    [ 1610.168320]  [<ffffffffa0327962>] ?
    nfsd_setuser_and_check_port+0x52/0x80 [nfsd]
    [ 1610.168320]  [<ffffffff812cd4bb>] ? selinux_cred_prepare+0x1b/0x30
    [ 1610.168320]  [<ffffffffa0341caa>] nfsd4_encode_getattr+0x5a/0x60 [nfsd]
    [ 1610.168320]  [<ffffffffa0341e07>] nfsd4_encode_operation+0x67/0x110
    [nfsd]
    [ 1610.168320]  [<ffffffffa033844d>] nfsd4_proc_compound+0x21d/0x810 [nfsd]
    [ 1610.168320]  [<ffffffffa0324d9b>] nfsd_dispatch+0xbb/0x200 [nfsd]
    [ 1610.168320]  [<ffffffffa00850cd>] svc_process_common+0x46d/0x6d0 [sunrpc]
    [ 1610.168320]  [<ffffffffa0085433>] svc_process+0x103/0x170 [sunrpc]
    [ 1610.168320]  [<ffffffffa032472f>] nfsd+0xbf/0x130 [nfsd]
    [ 1610.168320]  [<ffffffffa0324670>] ? nfsd_destroy+0x80/0x80 [nfsd]
    [ 1610.168320]  [<ffffffff810a5202>] kthread+0xd2/0xf0
    [ 1610.168320]  [<ffffffff810a5130>] ? insert_kthread_work+0x40/0x40
    [ 1610.168320]  [<ffffffff816c1ebc>] ret_from_fork+0x7c/0xb0
    [ 1610.168320]  [<ffffffff810a5130>] ? insert_kthread_work+0x40/0x40
    [ 1610.168320] Code: 78 02 e9 e7 fc ff ff 31 c0 31 d2 31 c9 66 89 45 ce
    41 8b 04 24 66 89 55 d0 66 89 4d d2 48 8d 04 80 49 8d 5c 84 04 e9 37 fd
    ff ff <0f> 0b 90 0f 1f 44 00 00 55 8b 56 08 c7 07 00 00 00 00 8b 46 0c
    [ 1610.168320] RIP  [<ffffffffa034d5ed>] _posix_to_nfsv4_one+0x3cd/0x3d0
    [nfsd]
    [ 1610.168320]  RSP <ffff88005a945b00>
    [ 1610.257313] ---[ end trace 838254e3e352285b ]---
    
    Signed-off-by: Kinglong Mee <kinglongmee@gmail.com>
    Signed-off-by: J. Bruce Fields <bfields@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d6a18aea9577844da0cdc0a595cbedde46b512d8
Author: Trond Myklebust <trond.myklebust@primarydata.com>
Date:   Fri Apr 18 14:43:57 2014 -0400

    NFSd: call rpc_destroy_wait_queue() from free_client()
    
    commit 4cb57e3032d4e4bf5e97780e9907da7282b02b0c upstream.
    
    Mainly to ensure that we don't leave any hanging timers.
    
    Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
    Signed-off-by: J. Bruce Fields <bfields@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ed6ad7a5caac4bc865280a2946b54f348a3bb2f4
Author: Trond Myklebust <trond.myklebust@primarydata.com>
Date:   Fri Apr 18 14:43:56 2014 -0400

    NFSd: Move default initialisers from create_client() to alloc_client()
    
    commit 5694c93e6c4954fa9424c215f75eeb919bddad64 upstream.
    
    Aside from making it clearer what is non-trivial in create_client(), it
    also fixes a bug whereby we can call free_client() before idr_init()
    has been called.
    
    Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
    Signed-off-by: J. Bruce Fields <bfields@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 21ec04003007ce13a632b1d53816e27f63e4dc3f
Author: Takashi Iwai <tiwai@suse.de>
Date:   Fri May 23 09:02:44 2014 +0200

    ALSA: hda - Fix onboard audio on Intel H97/Z97 chipsets
    
    commit 77f07800cb456bed6e5c345e6e4e83e8eda62437 upstream.
    
    The recent Intel H97/Z97 chipsets need the similar setups like other
    Intel chipsets for snooping, etc.  Especially without snooping, the
    audio playback stutters or gets corrupted.  This fix patch just adds
    the corresponding PCI ID entry with the proper flags.
    
    Reported-and-tested-by: Arthur Borsboom <arthurborsboom@gmail.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e60b0a2765dca37d50133463e639492b7e46a06a
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Mon May 19 22:52:30 2014 -0700

    Input: synaptics - T540p - unify with other LEN0034 models
    
    commit 6d396ede224dc596d92d7cab433713536e68916c upstream.
    
    The T540p has a touchpad with pnp-id LEN0034, all the models with this
    pnp-id have the same min/max values, except the T540p where the values are
    slightly off. Fix them to be identical.
    
    This is a preparation patch for simplifying the quirk table.
    
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2d597d4480e99eaf426eded8e9e9fcb6feb40673
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Wed May 14 11:10:40 2014 -0700

    Input: synaptics - add min/max quirk for the ThinkPad W540
    
    commit 0b5fe736fe923f1f5e05413878d5990e92ffbdf5 upstream.
    
    https://bugzilla.redhat.com/show_bug.cgi?id=1096436
    
    Tested-and-reported-by: ajayr@bigfoot.com
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5e02a153d1a0d5131a9943762f01179b42f074e2
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Mon May 5 09:36:43 2014 -0700

    Input: elantech - fix touchpad initialization on Gigabyte U2442
    
    commit 36189cc3cd57ab0f1cd75241f93fe01de928ac06 upstream.
    
    The hw_version 3 Elantech touchpad on the Gigabyte U2442 does not accept
    0x0b as initialization value for r10, this stand-alone version of the
    driver: http://planet76.com/drivers/elantech/psmouse-elantech-v6.tar.bz2
    
    Uses 0x03 which does work, so this means not setting bit 3 of r10 which
    sets: "Enable Real H/W Resolution In Absolute mode"
    
    Which will result in half the x and y resolution we get with that bit set,
    so simply not setting it everywhere is not a solution. We've been unable to
    find a way to identify touchpads where setting the bit will fail, so this
    patch uses a dmi based blacklist for this.
    
    https://bugzilla.kernel.org/show_bug.cgi?id=61151
    
    Reported-by: Philipp Wolfer <ph.wolfer@gmail.com>
    Tested-by: Philipp Wolfer <ph.wolfer@gmail.com>
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7f63e60bd6e1843fd3510d4cbc036e3d388944d1
Author: Sheng-Liang Song <ssl@chromium.org>
Date:   Thu Apr 24 16:28:29 2014 -0700

    Input: atkbd - fix keyboard not working on some LG laptops
    
    commit 3d725caa9dcc78c3dc9e7ea0c04f626468edd9c9 upstream.
    
    After issuing ATKBD_CMD_RESET_DIS, keyboard on some LG laptops stops
    working. The workaround is to stop issuing ATKBD_CMD_RESET_DIS commands.
    
    In order to keep changes in atkbd driver to the minimum we check DMI
    signature and only skip ATKBD_CMD_RESET_DIS if we are running on LG
    LW25-B7HV or P1-J273B.
    
    Signed-off-by: Sheng-Liang Song <ssl@chromium.org>
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f6de6225ca40427023398d1b22a6af810792741a
Author: Romain Izard <romain.izard.pro@gmail.com>
Date:   Tue Mar 4 10:09:39 2014 +0100

    trace: module: Maintain a valid user count
    
    commit 098507ae3ec2331476fb52e85d4040c1cc6d0ef4 upstream.
    
    The replacement of the 'count' variable by two variables 'incs' and
    'decs' to resolve some race conditions during module unloading was done
    in parallel with some cleanup in the trace subsystem, and was integrated
    as a merge.
    
    Unfortunately, the formula for this replacement was wrong in the tracing
    code, and the refcount in the traces was not usable as a result.
    
    Use 'count = incs - decs' to compute the user count.
    
    Link: http://lkml.kernel.org/p/1393924179-9147-1-git-send-email-romain.izard.pro@gmail.com
    
    Acked-by: Ingo Molnar <mingo@kernel.org>
    Cc: Rusty Russell <rusty@rustcorp.com.au>
    Cc: Frederic Weisbecker <fweisbec@gmail.com>
    Fixes: c1ab9cab7509 "merge conflict resolution"
    Signed-off-by: Romain Izard <romain.izard.pro@gmail.com>
    Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 863a921283fca22d63865314182e7c9e5fba0ad3
Author: K. Y. Srinivasan <kys@microsoft.com>
Date:   Thu Apr 3 18:02:45 2014 -0700

    Drivers: hv: vmbus: Negotiate version 3.0 when running on ws2012r2 hosts
    
    commit 03367ef5ea811475187a0732aada068919e14d61 upstream.
    
    Only ws2012r2 hosts support the ability to reconnect to the host on VMBUS. This functionality
    is needed by kexec in Linux. To use this functionality we need to negotiate version 3.0 of the
    VMBUS protocol.
    
    Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8567f561ed67f4a444b554c8463d129c2ad0e8ad
Author: Chew, Kean ho <kean.ho.chew@intel.com>
Date:   Sat Mar 1 00:03:56 2014 +0800

    i2c: i801: enable Intel BayTrail SMBUS
    
    commit 1b31e9b76ef8c62291e698dfdb973499986a7f68 upstream.
    
    Add Device ID of Intel BayTrail SMBus Controller.
    
    Signed-off-by: Chew, Kean ho <kean.ho.chew@intel.com>
    Signed-off-by: Chew, Chiau Ee <chiau.ee.chew@intel.com>
    Reviewed-by: Jean Delvare <jdelvare@suse.de>
    Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
    Cc: "Chang, Rebecca Swee Fun" <rebecca.swee.fun.chang@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1b796c0acb32f18938041159d2d9538b26b75893
Author: James Ralston <james.d.ralston@intel.com>
Date:   Mon Nov 4 09:29:48 2013 -0800

    i2c: i801: Add Device IDs for Intel Wildcat Point-LP PCH
    
    commit afc659241258b40b683998ec801d25d276529f43 upstream.
    
    This patch adds the SMBus Device IDs for the Intel Wildcat Point-LP PCH.
    
    Signed-off-by: James Ralston <james.d.ralston@intel.com>
    Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
    Cc: "Chang, Rebecca Swee Fun" <rebecca.swee.fun.chang@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4e32a7c66fae40bde0fbff8cbc893eabe8575135
Author: Salva Peiró <speiro@ai2.upv.es>
Date:   Wed Apr 30 19:48:02 2014 +0200

    media: media-device: fix infoleak in ioctl media_enum_entities()
    
    commit e6a623460e5fc960ac3ee9f946d3106233fd28d8 upstream.
    
    This fixes CVE-2014-1739.
    
    Signed-off-by: Salva Peiró <speiro@ai2.upv.es>
    Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
    Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c4f3c998c17e31c73c1ab223469435a12358d25e
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Thu Nov 7 08:08:44 2013 +0000

    clk: vexpress: NULL dereference on error path
    
    commit 6b4ed8b00e93bd31f24a25f59ed8d1b808d0cc00 upstream.
    
    If the allocation fails then we dereference the NULL in the error path.
    Just return directly.
    
    Fixes: ed27ff1db869 ('clk: Versatile Express clock generators ("osc") driver')
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Pawel Moll <pawel.moll@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d2157c29092990941b82488a3653d95fc9e2cb7a
Author: Tim Chen <tim.c.chen@linux.intel.com>
Date:   Mon Mar 17 16:52:26 2014 -0700

    crypto: crypto_wq - Fix late crypto work queue initialization
    
    commit 130fa5bc81b44b6cc1fbdea3abf6db0da22964e0 upstream.
    
    The crypto algorithm modules utilizing the crypto daemon could
    be used early when the system start up.  Using module_init
    does not guarantee that the daemon's work queue is initialized
    when the cypto alorithm depending on crypto_wq starts.  It is necessary
    to initialize the crypto work queue earlier at the subsystem
    init time to make sure that it is initialized
    when used.
    
    Signed-off-by: Tim Chen <tim.c.chen@linux.intel.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b944e0e0b84a1f8871b09723a1d035d70368e298
Author: Geert Uytterhoeven <geert+renesas@glider.be>
Date:   Mon Apr 14 18:52:14 2014 +0200

    Documentation: Update stable address in Chinese and Japanese translations
    
    commit 98b0f811aade1b7c6e7806c86aa0befd5919d65f upstream.
    
    The English and Korean translations were updated, the Chinese and Japanese
    weren't.
    
    Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b020ee793f714e7d293078a1e0ea8a545c33b16f
Author: Emil Goode <emilgoode@gmail.com>
Date:   Sun Mar 9 21:06:51 2014 +0100

    brcmsmac: fix deadlock on missing firmware
    
    commit 8fc1e8c240aab968db658b2d8d079b4391207a36 upstream.
    
    When brcm80211 firmware is not installed networking hangs.
    A deadlock happens because we call ieee80211_unregister_hw()
    from the .start callback of struct ieee80211_ops. When .start
    is called we are under rtnl lock and ieee80211_unregister_hw()
    tries to take it again.
    
    Function call stack:
    
    dev_change_flags()
    	__dev_change_flags()
    		__dev_open()
    			ASSERT_RTNL() <-- Assert rtnl lock
    			ops->ndo_open()
    
    .ndo_open = ieee80211_open,
    
    ieee80211_open()
    	ieee80211_do_open()
    		drv_start()
    			local->ops->start()
    
    .start = brcms_ops_start,
    
    brcms_ops_start()
    	brcms_remove()
    		ieee80211_unregister_hw()
    			rtnl_lock() <-- Here we deadlock
    
    Introduced by:
    commit 25b5632fb35ca61b8ae3eee235edcdc2883f7a5e
    ("brcmsmac: request firmware in .start() callback")
    
    This patch fixes the bug by removing the call to brcms_remove()
    and moves the brcms_request_fw() call to the top of the .start
    callback to not initiate anything unless firmware is installed.
    
    Signed-off-by: Emil Goode <emilgoode@gmail.com>
    Signed-off-by: John W. Linville <linville@tuxdriver.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5d33fff5ca9aab5ae7d28fc06179a91eb529758e
Author: Russell King <rmk+kernel@arm.linux.org.uk>
Date:   Sun Apr 6 15:20:03 2014 -0700

    leds: leds-pwm: properly clean up after probe failure
    
    commit 392369019eb96e914234ea21eda806cb51a1073e upstream.
    
    When probing with DT, we add each LED one at a time.  If we find a LED
    without a PWM device (because it is not available yet) we fail the
    initialisation, unregister previous LEDs, and then by way of managed
    resources, we free the structure.
    
    The problem with this is we may have a scheduled and active work_struct
    in this structure, and this results in a nasty kernel oops.
    
    We need to cancel this work_struct properly upon cleanup - and the
    cleanup we require is the same cleanup as we do when the LED platform
    device is removed.  Rather than writing this same code three times,
    move it into a separate function and use it in all three places.
    
    Fixes: c971ff185f64 ("leds: leds-pwm: Defer led_pwm_set() if PWM can sleep")
    Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
    Signed-off-by: Bryan Wu <cooloney@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d3f09691b3583edfabbd0ea04ef3e015df23a708
Author: Martin Peres <martin.peres@labri.fr>
Date:   Fri Mar 14 00:26:52 2014 +0100

    drm/nouveau/pm/fan: drop the fan lock in fan_update() before rescheduling
    
    commit 61679fe153b2b9ea5b5e2ab93305419e85e99a9d upstream.
    
    This should fix a deadlock that has been reported to us where fan_update()
    would hold the fan lock and try to grab the alarm_program_lock to reschedule
    an update. On an other CPU, the alarm_program_lock would have been taken
    before calling fan_update(), leading to a deadlock.
    
    We should Cc: <stable@vger.kernel.org> # 3.9+
    
    Reported-by: Marcin Slusarz <marcin.slusarz@gmail.com>
    Tested-by: Timothée Ravier <tim@siosm.fr>
    Tested-by: Boris Fersing (IRC nick fersingb, no public email address)
    Signed-off-by: Martin Peres <martin.peres@free.fr>
    Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bfb0756180545a171be15acdb4ceb30bd7f6f7e1
Author: Ilia Mirkin <imirkin@alum.mit.edu>
Date:   Wed Mar 26 19:37:21 2014 -0400

    drm/nouveau/acpi: allow non-optimus setups to load vbios from acpi
    
    commit a3d0b1218d351c6e6f3cea36abe22236a08cb246 upstream.
    
    There appear to be a crop of new hardware where the vbios is not
    available from PROM/PRAMIN, but there is a valid _ROM method in ACPI.
    The data read from PCIROM almost invariably contains invalid
    instructions (still has the x86 opcodes), which makes this a low-risk
    way to try to obtain a valid vbios image.
    
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=76475
    Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
    Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7ba55415d0cfe7db9cb838871e50cbb22a28f697
Author: Ben Hutchings <ben@decadent.org.uk>
Date:   Sat Apr 26 21:59:04 2014 +0100

    rtl8192cu: Fix unbalanced irq enable in error path of rtl92cu_hw_init()
    
    commit 3234f5b06fc3094176a86772cc64baf3decc98fc upstream.
    
    Fixes: a53268be0cb9 ('rtlwifi: rtl8192cu: Fix too long disable of IRQs')
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
    Signed-off-by: John W. Linville <linville@tuxdriver.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4468ae6574c41a73bc3c126b32dfff73538656c7
Author: Liu Hua <sdu.liu@huawei.com>
Date:   Thu Mar 27 06:56:18 2014 +0100

    ARM: 8012/1: kdump: Avoid overflow when converting pfn to physaddr
    
    commit 8fad87bca7ac9737e413ba5f1656f1114a8c314d upstream.
    
    When we configure CONFIG_ARM_LPAE=y, pfn << PAGE_SHIFT will
    overflow if pfn >= 0x100000 in copy_oldmem_page.
    So use __pfn_to_phys for converting.
    
    Signed-off-by: Liu Hua <sdu.liu@huawei.com>
    Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 252f0f90820c59870cb566f1718f16708a68857d
Author: Sascha Hauer <s.hauer@pengutronix.de>
Date:   Tue May 6 13:01:34 2014 +0200

    ARM: dts: i.MX53: Fix ipu register space size
    
    commit 6d66da89bf4422c0a0693627fb3e25f74af50f92 upstream.
    
    The IPU register space is 128MB, not 2GB.
    
    Fixes: abed9a6bf2bb 'ARM i.MX53: Add IPU support'
    Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
    Acked-by: Shawn Guo <shawn.guo@freescale.com>
    Signed-off-by: Olof Johansson <olof@lixom.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5081b0bcd956f6ef40874bfb8f59f11b2759347a
Author: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Date:   Mon Mar 11 12:02:13 2013 -0300

    omap3isp: Defer probe when the IOMMU is not available
    
    commit 7c0f812a5d65e712618af880dda4a5cc7ed79463 upstream.
    
    When the OMAP3 ISP driver is compiled in the kernel the device can be
    probed before the corresponding IOMMU is available. Defer the probe in
    that case, and fix a crash in the error path.
    
    Reported-by: Javier Martin <javier.martin@vista-silicon.com>
    Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3d3da408c35c3d674e29d56b19db2e37058bf2dc
Author: Christoph Hellwig <hch@lst.de>
Date:   Sun May 4 13:03:32 2014 +0200

    posix_acl: handle NULL ACL in posix_acl_equiv_mode
    
    commit 50c6e282bdf5e8dabf8d7cf7b162545a55645fd9 upstream.
    
    Various filesystems don't bother checking for a NULL ACL in
    posix_acl_equiv_mode, and thus can dereference a NULL pointer when it
    gets passed one. This usually happens from the NFS server, as the ACL tools
    never pass a NULL ACL, but instead of one representing the mode bits.
    
    Instead of adding boilerplat to all filesystems put this check into one place,
    which will allow us to remove the check from other filesystems as well later
    on.
    
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Reported-by: Ben Greear <greearb@candelatech.com>
    Reported-by: Marco Munderloh <munderl@tnt.uni-hannover.de>,
    Cc: Chuck Lever <chuck.lever@oracle.com>
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0d38fa9f117581424fc06825aa8d32ad48548d25
Author: Mohammed Habibulla <moch@chromium.org>
Date:   Thu Apr 17 11:37:13 2014 -0700

    Bluetooth: Add support for Lite-on [04ca:3007]
    
    commit 1fb4e09a7e780b915dbd172592ae7e2a4c071065 upstream.
    
    Add support for the AR9462 chip
    
    T:  Bus=01 Lev=01 Prnt=01 Port=03 Cnt=03 Dev#=  3 Spd=12   MxCh= 0
    D:  Ver= 1.10 Cls=e0(wlcon) Sub=01 Prot=01 MxPS=64 #Cfgs=  1
    P:  Vendor=04ca ProdID=3007 Rev= 0.01
    C:* #Ifs= 2 Cfg#= 1 Atr=e0 MxPwr=100mA
    I:* If#= 0 Alt= 0 #EPs= 3 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    E:  Ad=81(I) Atr=03(Int.) MxPS=  16 Ivl=1ms
    E:  Ad=82(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms
    E:  Ad=02(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms
    I:* If#= 1 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    E:  Ad=83(I) Atr=01(Isoc) MxPS=   0 Ivl=1ms
    E:  Ad=03(O) Atr=01(Isoc) MxPS=   0 Ivl=1ms
    I:  If#= 1 Alt= 1 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    E:  Ad=83(I) Atr=01(Isoc) MxPS=   9 Ivl=1ms
    E:  Ad=03(O) Atr=01(Isoc) MxPS=   9 Ivl=1ms
    I:  If#= 1 Alt= 2 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    E:  Ad=83(I) Atr=01(Isoc) MxPS=  17 Ivl=1ms
    E:  Ad=03(O) Atr=01(Isoc) MxPS=  17 Ivl=1ms
    I:  If#= 1 Alt= 3 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    E:  Ad=83(I) Atr=01(Isoc) MxPS=  25 Ivl=1ms
    E:  Ad=03(O) Atr=01(Isoc) MxPS=  25 Ivl=1ms
    I:  If#= 1 Alt= 4 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    E:  Ad=83(I) Atr=01(Isoc) MxPS=  33 Ivl=1ms
    E:  Ad=03(O) Atr=01(Isoc) MxPS=  33 Ivl=1ms
    I:  If#= 1 Alt= 5 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    E:  Ad=83(I) Atr=01(Isoc) MxPS=  49 Ivl=1ms
    E:  Ad=03(O) Atr=01(Isoc) MxPS=  49 Ivl=1ms
    
    Signed-off-by: Mohammed Habibulla <moch@chromium.org>
    Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6142655f2298ea3eca194d36a09cfba9a402fc25
Author: Johan Hedberg <johan.hedberg@intel.com>
Date:   Fri Apr 11 12:02:32 2014 -0700

    Bluetooth: Fix redundant encryption request for reauthentication
    
    commit 09da1f3463eb81d59685df723b1c5950b7570340 upstream.
    
    When we're performing reauthentication (in order to elevate the
    security level from an unauthenticated key to an authenticated one) we
    do not need to issue any encryption command once authentication
    completes. Since the trigger for the encryption HCI command is the
    ENCRYPT_PEND flag this flag should not be set in this scenario.
    Instead, the REAUTH_PEND flag takes care of all necessary steps for
    reauthentication.
    
    Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2ef1b8b7d71559d3fc6ef6731a9244850a76f58d
Author: Johan Hedberg <johan.hedberg@intel.com>
Date:   Fri Apr 11 12:02:31 2014 -0700

    Bluetooth: Fix triggering BR/EDR L2CAP Connect too early
    
    commit 9eb1fbfa0a737fd4d3a6d12d71c5ea9af622b887 upstream.
    
    Commit 1c2e004183178 introduced an event handler for the encryption key
    refresh complete event with the intent of fixing some LE/SMP cases.
    However, this event is shared with BR/EDR and there we actually want to
    act only on the auth_complete event (which comes after the key refresh).
    
    If we do not do this we may trigger an L2CAP Connect Request too early
    and cause the remote side to return a security block error.
    
    Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b365350303850369de5352aca05e1dba9da7a9ad
Author: Clemens Ladisch <clemens@ladisch.de>
Date:   Thu May 1 12:20:22 2014 +0200

    ALSA: usb-audio: work around corrupted TEAC UD-H01 feedback data
    
    commit 7040b6d1febfdbd9c1595efb751d492cd2503f96 upstream.
    
    The TEAC UD-H01 firmware sends wrong feedback frequency values, thus
    causing the PC to send the samples at a wrong rate, which results in
    clicks and crackles in the output.
    
    Add a workaround to detect and fix the corruption.
    
    Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
    [mick37@gmx.de: use sender->udh01_fb_quirk rather than
     ep->udh01_fb_quirk in snd_usb_handle_sync_urb()]
    Reported-and-tested-by: Mick <mick37@gmx.de>
    Reported-and-tested-by: Andrea Messa <andr.messa@tiscali.it>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ce9f1d7670bd1e5e17dcb1fa16f852397d31d6c6
Author: Stanislaw Gruszka <sgruszka@redhat.com>
Date:   Thu Apr 17 11:08:47 2014 +0200

    rt2x00: fix beaconing on USB
    
    commit 8834d3608cc516f13e2e510f4057c263f3d2ce42 upstream.
    
    When disable beaconing we clear register with beacon and newer set it
    back, what make we stop send beacons infinitely.
    
    Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
    Signed-off-by: John W. Linville <linville@tuxdriver.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 55fbcaa261de0013d8df9d3d2a24c4e104f6be7b
Author: Daniele Forsi <dforsi@gmail.com>
Date:   Mon Apr 28 17:09:11 2014 +0200

    USB: Nokia 5300 should be treated as unusual dev
    
    commit 6ed07d45d09bc2aa60e27b845543db9972e22a38 upstream.
    
    Signed-off-by: Daniele Forsi <dforsi@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 184feee56d980ab75b8a5d5408b5be5a9860b16f
Author: Victor A. Santos <victoraur.santos@gmail.com>
Date:   Sat Apr 26 23:20:14 2014 -0300

    USB: Nokia 305 should be treated as unusual dev
    
    commit f0ef5d41792a46a1085dead9dfb0bdb2c574638e upstream.
    
    Signed-off-by: Victor A. Santos <victoraur.santos@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 141d3764d4a30ee333ce4b5e2420971ab88c5c5e
Author: Daniele Forsi <dforsi@gmail.com>
Date:   Tue Apr 29 11:44:03 2014 +0200

    usb: storage: shuttle_usbat: fix discs being detected twice
    
    commit df602c2d2358f02c6e49cffc5b49b9daa16db033 upstream.
    
    Even if the USB-to-ATAPI converter supported multiple LUNs, this
    driver would always detect the same physical device or media because
    it doesn't use srb->device->lun in any way.
    Tested with an Hewlett-Packard CD-Writer Plus 8200e.
    
    Signed-off-by: Daniele Forsi <dforsi@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d00340f51f90c876581dee83e72b23fb854e790f
Author: Bjørn Mork <bjorn@mork.no>
Date:   Sun Apr 27 16:47:42 2014 +0200

    usb: qcserial: add a number of Dell devices
    
    commit 4d7c0136a54f62501f8a34c4d08a5e0258d3d3ca upstream.
    
    Dan writes:
    
    "The Dell drivers use the same configuration for PIDs:
    
    81A2: Dell Wireless 5806 Gobi(TM) 4G LTE Mobile Broadband Card
    81A3: Dell Wireless 5570 HSPA+ (42Mbps) Mobile Broadband Card
    81A4: Dell Wireless 5570e HSPA+ (42Mbps) Mobile Broadband Card
    81A8: Dell Wireless 5808 Gobi(TM) 4G LTE Mobile Broadband Card
    81A9: Dell Wireless 5808e Gobi(TM) 4G LTE Mobile Broadband Card
    
    These devices are all clearly Sierra devices, but are also definitely
    Gobi-based.  The A8 might be the MC7700/7710 and A9 is likely a MC7750.
    
    >From DellGobi5kSetup.exe from the Dell drivers:
    
    usbif0: serial/firmware loader?
    usbif2: nmea
    usbif3: modem/ppp
    usbif8: net/QMI"
    
    Reported-by: AceLan Kao <acelan.kao@canonical.com>
    Reported-by: Dan Williams <dcbw@redhat.com>
    Signed-off-by: Bjørn Mork <bjorn@mork.no>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit dee037703a4144fcf190b17aaa7543c907f7c375
Author: Alan Stern <stern@rowland.harvard.edu>
Date:   Thu May 1 15:21:42 2014 -0400

    USB: OHCI: fix problem with global suspend on ATI controllers
    
    commit c1db30a2a79eb59997b13b8cabf2a50bea9f04e1 upstream.
    
    Some OHCI controllers from ATI/AMD seem to have difficulty with
    "global" USB suspend, that is, suspending an entire USB bus without
    setting the suspend feature for each port connected to a device.  When
    we try to resume the child devices, the controller gives timeout
    errors on the unsuspended ports, requiring resets, and can even cause
    ohci-hcd to hang; see
    
    	http://marc.info/?l=linux-usb&m=139514332820398&w=2
    
    and the following messages.
    
    This patch fixes the problem by adding a new quirk flag to ohci-hcd.
    The flag causes the ohci_rh_suspend() routine to suspend each
    unsuspended, enabled port before suspending the root hub.  This
    effectively converts the "global" suspend to an ordinary root-hub
    suspend.  There is no need to unsuspend these ports when the root hub
    is resumed, because the child devices will be resumed anyway in the
    course of a normal system resume ("global" suspend is never used for
    runtime PM).
    
    This patch should be applied to all stable kernels which include
    commit 0aa2832dd0d9 (USB: use "global suspend" for system sleep on
    USB-2 buses) or a backported version thereof.
    
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    Reported-by: Peter Münster <pmlists@free.fr>
    Tested-by: Peter Münster <pmlists@free.fr>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e044bf34f58acd63b408794326795b6e6b87f90a
Author: Jean-Jacques Hiblot <jjhiblot@traphandler.com>
Date:   Wed Mar 12 17:30:08 2014 +0100

    usb: gadget: at91-udc: fix irq and iomem resource retrieval
    
    commit 886c7c426d465732ec9d1b2bbdda5642fc2e7e05 upstream.
    
    When using dt resources retrieval (interrupts and reg properties) there is
    no predefined order for these resources in the platform dev resource
    table. Also don't expect the number of resource to be always 2.
    
    Signed-off-by: Jean-Jacques Hiblot <jjhiblot@traphandler.com>
    Acked-by: Boris BREZILLON <b.brezillon@overkiz.com>
    Acked-by: Nicolas Ferre <nicolas.ferre@atmel.com>
    Signed-off-by: Felipe Balbi <balbi@ti.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ed2cbfb93f970a6290ab0435c0b8ff4007783405
Author: Nikita Yushchenko <nyushchenko@dev.rtsoft.ru>
Date:   Mon Apr 28 19:23:44 2014 +0400

    fsl-usb: do not test for PHY_CLK_VALID bit on controller version 1.6
    
    commit d183c81929beeba842b74422f754446ef2b8b49c upstream.
    
    Per reference manuals of Freescale P1020 and P2020 SoCs, USB controller
    present in these SoCs has bit 17 of USBx_CONTROL register marked as
    Reserved - there is no PHY_CLK_VALID bit there.
    
    Testing for this bit in ehci_fsl_setup_phy() behaves differently on two
    P1020RDB boards available here - on one board test passes and fsl-usb
    init succeeds, but on other board test fails, causing fsl-usb init to
    fail.
    
    This patch changes ehci_fsl_setup_phy() not to test PHY_CLK_VALID on
    controller version 1.6 that (per manual) does not have this bit.
    
    Signed-off-by: Nikita Yushchenko <nyushchenko@dev.rtsoft.ru>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d727b2e78a1aefb26a1b3ee579712df15df51415
Author: Atilla Filiz <atilla.filiz@essensium.com>
Date:   Fri Apr 11 16:51:23 2014 +0200

    iio:imu:mpu6050: Fixed segfault in Invensens MPU driver due to null dereference
    
    commit b9b3a41893c3f1be67b5aacfa525969914bea0e9 upstream.
    
    The driver segfaults when the kernel boots with device tree as the
    platform data is then not present and the pointer is deferenced without
    checking it is not null.  This patch introduces such a check avoiding the
    crash.
    
    Signed-off-by: Atilla Filiz <atilla.filiz@essensium.com>
    Signed-off-by: Jonathan Cameron <jic23@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 839472b6fac9e330012e9de269cfba5ae01cca92
Author: Thierry Reding <treding@nvidia.com>
Date:   Wed Apr 9 14:26:59 2014 +0200

    drm/tegra: Remove gratuitous pad field
    
    commit cbfbbabb89b37f6bad05f478d906a385149f288d upstream.
    
    The version of the drm_tegra_submit structure that was merged all the
    way back in 3.10 contains a pad field that was originally intended to
    properly pad the following __u64 field. Unfortunately it seems like a
    different field was dropped during review that caused this padding to
    become unnecessary, but the pad field wasn't removed at that time.
    
    One possible side-effect of this is that since the __u64 following the
    pad is now no longer properly aligned, the compiler may (or may not)
    introduce padding itself, which results in no predictable ABI.
    
    Rectify this by removing the pad field so that all fields are again
    naturally aligned. Technically this is breaking existing userspace ABI,
    but given that there aren't any (released) userspace drivers that make
    use of this yet, the fallout should be minimal.
    
    Fixes: d43f81cbaf43 ("drm/tegra: Add gr2d device")
    Signed-off-by: Thierry Reding <treding@nvidia.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 18cb317078ba64706cda094a7b72da5faa7968e6
Author: Leo Liu <leo.liu@amd.com>
Date:   Mon Apr 28 09:40:22 2014 -0400

    drm/radeon: check buffer relocation offset
    
    commit 695daf1a8e731a4b5b89de89a61f32a4d7ad7094 upstream.
    
    Signed-off-by: Leo Liu <leo.liu@amd.com>
    Signed-off-by: Christian König <christian.koenig@amd.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7f69542687b31c83bcc54a3033f060531be57292
Author: Alex Deucher <alexdeucher@gmail.com>
Date:   Tue Apr 15 12:44:34 2014 -0400

    drm/radeon: fix ATPX detection on non-VGA GPUs
    
    commit e9a4099a59cc598a44006059dd775c25e422b772 upstream.
    
    Some newer PX laptops have the pci device class
    set to DISPLAY_OTHER rather than DISPLAY_VGA.  This
    properly detects ATPX on those laptops.
    
    Based on a patch from: Pali Rohár <pali.rohar@gmail.com>
    
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Cc: airlied@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 095b9f1a78be7d5bfdafe1a77c294f1f88ed7f30
Author: Egbert Eich <eich@suse.de>
Date:   Fri Apr 25 10:56:22 2014 +0200

    drm/i915: Break encoder->crtc link separately in intel_sanitize_crtc()
    
    commit 7f1950fbb989e8fc5463b307e062b4529d51c862 upstream.
    
    Depending on the SDVO output_flags SDVO may have multiple connectors
    linking to the same encoder (in intel_connector->encoder->base).
    Only one of those connectors should be active (ie link to the encoder
    thru drm_connector->encoder).
    If intel_connector_break_all_links() is called from intel_sanitize_crtc()
    we may break the crtc connection of an encoder thru an inactive connector
    in which case intel_connector_break_all_links() will not be called again
    for the active connector if this happens to come later in the list due to:
        if (connector->encoder->base.crtc != &crtc->base)
                                     continue;
    in intel_sanitize_crtc().
    This will however leave the drm_connector->encoder linkage for this
    active connector in place. Subsequently this will cause multiple
    warnings in intel_connector_check_state() to trigger and the driver
    will eventually die in drm_encoder_crtc_ok() (because of crtc == NULL).
    
    To avoid this remove intel_connector_break_all_links() and move its
    code to its two calling functions: intel_sanitize_crtc() and
    intel_sanitize_encoder().
    This allows to implement the link breaking more flexibly matching
    the surrounding code: ie. in intel_sanitize_crtc() we can break the
    crtc link separatly after the links to the encoders have been
    broken which avoids above problem.
    
    This regression has been introduced in:
    
    commit 24929352481f085c5f85d4d4cbc919ddf106d381
    Author: Daniel Vetter <daniel.vetter@ffwll.ch>
    Date:   Mon Jul 2 20:28:59 2012 +0200
    
        drm/i915: read out the modeset hw state at load and resume time
    
    so goes back to the very beginning of the modeset rework.
    
    v2: This patch takes care of the concernes voiced by Chris Wilson
    and Daniel Vetter that only breaking links if the drm_connector
    is linked to an encoder may miss some links.
    v3: move all encoder handling to encoder loop as suggested by
    Daniel Vetter.
    
    Signed-off-by: Egbert Eich <eich@suse.de>
    Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
    Cc: Jani Nikula <jani.nikula@linux.intel.com>
    Signed-off-by: Jani Nikula <jani.nikula@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 658864cc2cc40d228ff0a75457fcbb4dedb1a52e
Author: NeilBrown <neilb@suse.de>
Date:   Tue May 6 09:36:08 2014 +1000

    md: avoid possible spinning md thread at shutdown.
    
    commit 0f62fb220aa4ebabe8547d3a9ce4a16d3c045f21 upstream.
    
    If an md array with externally managed metadata (e.g. DDF or IMSM)
    is in use, then we should not set safemode==2 at shutdown because:
    
    1/ this is ineffective: user-space need to be involved in any 'safemode' handling,
    2/ The safemode management code doesn't cope with safemode==2 on external metadata
       and md_check_recover enters an infinite loop.
    
    Even at shutdown, an infinite-looping process can be problematic, so this
    could cause shutdown to hang.
    
    Signed-off-by: NeilBrown <neilb@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1c0301d184e2ea36aa82917c9c43ea1c3f547a02
Author: Viresh Kumar <viresh.kumar@linaro.org>
Date:   Mon May 12 13:42:29 2014 +0530

    hrtimer: Set expiry time before switch_hrtimer_base()
    
    commit 84ea7fe37908254c3bd90910921f6e1045c1747a upstream.
    
    switch_hrtimer_base() calls hrtimer_check_target() which ensures that
    we do not migrate a timer to a remote cpu if the timer expires before
    the current programmed expiry time on that remote cpu.
    
    But __hrtimer_start_range_ns() calls switch_hrtimer_base() before the
    new expiry time is set. So the sanity check in hrtimer_check_target()
    is operating on stale or even uninitialized data.
    
    Update expiry time before calling switch_hrtimer_base().
    
    [ tglx: Rewrote changelog once again ]
    
    Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
    Cc: linaro-kernel@lists.linaro.org
    Cc: linaro-networking@linaro.org
    Cc: fweisbec@gmail.com
    Cc: arvind.chauhan@arm.com
    Link: http://lkml.kernel.org/r/81999e148745fc51bbcd0615823fbab9b2e87e23.1399882253.git.viresh.kumar@linaro.org
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7f7bb02012cc1727c682f889aa89bc0a44762445
Author: Leon Ma <xindong.ma@intel.com>
Date:   Wed Apr 30 16:43:10 2014 +0800

    hrtimer: Prevent remote enqueue of leftmost timers
    
    commit 012a45e3f4af68e86d85cce060c6c2fed56498b2 upstream.
    
    If a cpu is idle and starts an hrtimer which is not pinned on that
    same cpu, the nohz code might target the timer to a different cpu.
    
    In the case that we switch the cpu base of the timer we already have a
    sanity check in place, which determines whether the timer is earlier
    than the current leftmost timer on the target cpu. In that case we
    enqueue the timer on the current cpu because we cannot reprogram the
    clock event device on the target.
    
    If the timers base is already the target CPU we do not have this
    sanity check in place so we enqueue the timer as the leftmost timer in
    the target cpus rb tree, but we cannot reprogram the clock event
    device on the target cpu. So the timer expires late and subsequently
    prevents the reprogramming of the target cpu clock event device until
    the previously programmed event fires or a timer with an earlier
    expiry time gets enqueued on the target cpu itself.
    
    Add the same target check as we have for the switch base case and
    start the timer on the current cpu if it would become the leftmost
    timer on the target.
    
    [ tglx: Rewrote subject and changelog ]
    
    Signed-off-by: Leon Ma <xindong.ma@intel.com>
    Link: http://lkml.kernel.org/r/1398847391-5994-1-git-send-email-xindong.ma@intel.com
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit be6e0ece91223ae55521f4b456ff722792485eb7
Author: Stuart Hayes <stuart.w.hayes@gmail.com>
Date:   Tue Apr 29 17:55:02 2014 -0500

    hrtimer: Prevent all reprogramming if hang detected
    
    commit 6c6c0d5a1c949d2e084706f9e5fb1fccc175b265 upstream.
    
    If the last hrtimer interrupt detected a hang it sets hang_detected=1
    and programs the clock event device with a delay to let the system
    make progress.
    
    If hang_detected == 1, we prevent reprogramming of the clock event
    device in hrtimer_reprogram() but not in hrtimer_force_reprogram().
    
    This can lead to the following situation:
    
    hrtimer_interrupt()
       hang_detected = 1;
       program ce device to Xms from now (hang delay)
    
    We have two timers pending:
       T1 expires 50ms from now
       T2 expires 5s from now
    
    Now T1 gets canceled, which causes hrtimer_force_reprogram() to be
    invoked, which in turn programs the clock event device to T2 (5
    seconds from now).
    
    Any hrtimer_start after that will not reprogram the hardware due to
    hang_detected still being set. So we effectivly block all timers until
    the T2 event fires and cleans up the hang situation.
    
    Add a check for hang_detected to hrtimer_force_reprogram() which
    prevents the reprogramming of the hang delay in the hardware
    timer. The subsequent hrtimer_interrupt will resolve all outstanding
    issues.
    
    [ tglx: Rewrote subject and changelog and fixed up the comment in
      	hrtimer_force_reprogram() ]
    
    Signed-off-by: Stuart Hayes <stuart.w.hayes@gmail.com>
    Link: http://lkml.kernel.org/r/53602DC6.2060101@gmail.com
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f1c8467e3c9bc285e6d6a57b968182f9b0795cb3
Author: Grant Likely <grant.likely@linaro.org>
Date:   Tue Apr 29 12:05:22 2014 +0100

    drivercore: deferral race condition fix
    
    commit 58b116bce13612e5aa6fcd49ecbd4cf8bb59e835 upstream.
    
    When the kernel is built with CONFIG_PREEMPT it is possible to reach a state
    when all modules loaded but some driver still stuck in the deferred list
    and there is a need for external event to kick the deferred queue to probe
    these drivers.
    
    The issue has been observed on embedded systems with CONFIG_PREEMPT enabled,
    audio support built as modules and using nfsroot for root filesystem.
    
    The following log fragment shows such sequence when all audio modules
    were loaded but the sound card is not present since the machine driver has
    failed to probe due to missing dependency during it's probe.
    The board is am335x-evmsk (McASP<->tlv320aic3106 codec) with davinci-evm
    machine driver:
    
    ...
    [   12.615118] davinci-mcasp 4803c000.mcasp: davinci_mcasp_probe: ENTER
    [   12.719969] davinci_evm sound.3: davinci_evm_probe: ENTER
    [   12.725753] davinci_evm sound.3: davinci_evm_probe: snd_soc_register_card
    [   12.753846] davinci-mcasp 4803c000.mcasp: davinci_mcasp_probe: snd_soc_register_component
    [   12.922051] davinci-mcasp 4803c000.mcasp: davinci_mcasp_probe: snd_soc_register_component DONE
    [   12.950839] davinci_evm sound.3: ASoC: platform (null) not registered
    [   12.957898] davinci_evm sound.3: davinci_evm_probe: snd_soc_register_card DONE (-517)
    [   13.099026] davinci-mcasp 4803c000.mcasp: Kicking the deferred list
    [   13.177838] davinci-mcasp 4803c000.mcasp: really_probe: probe_count = 2
    [   13.194130] davinci_evm sound.3: snd_soc_register_card failed (-517)
    [   13.346755] davinci_mcasp_driver_init: LEAVE
    [   13.377446] platform sound.3: Driver davinci_evm requests probe deferral
    [   13.592527] platform sound.3: really_probe: probe_count = 0
    
    In the log the machine driver enters it's probe at 12.719969 (this point it
    has been removed from the deferred lists). McASP driver already executing
    it's probing (since 12.615118).
    The machine driver tries to construct the sound card (12.950839) but did
    not found one of the components so it fails. After this McASP driver
    registers all the ASoC components (the machine driver still in it's probe
    function after it failed to construct the card) and the deferred work is
    prepared at 13.099026 (note that this time the machine driver is not in the
    lists so it is not going to be handled when the work is executing).
    Lastly the machine driver exit from it's probe and the core places it to
    the deferred list but there will be no other driver going to load and the
    deferred queue is not going to be kicked again - till we have external event
    like connecting USB stick, etc.
    
    The proposed solution is to try the deferred queue once more when the last
    driver is asking for deferring and we had drivers loaded while this last
    driver was probing.
    
    This way we can avoid drivers stuck in the deferred queue.
    
    Signed-off-by: Grant Likely <grant.likely@linaro.org>
    Reviewed-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
    Tested-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
    Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7cf41c817283181243cba96536832ba91f2dd092
Author: Josef Gajdusek <atx@atx.name>
Date:   Mon May 12 13:48:26 2014 +0200

    hwmon: (emc1403) Support full range of known chip revision numbers
    
    commit 3a18e1398fc2dc9c32bbdc50664da3a77959a8d1 upstream.
    
    The datasheet for EMC1413/EMC1414, which is fully compatible to
    EMC1403/1404 and uses the same chip identification, references revision
    numbers 0x01, 0x03, and 0x04. Accept the full range of revision numbers
    from 0x01 to 0x04 to make sure none are missed.
    
    Signed-off-by: Josef Gajdusek <atx@atx.name>
    [Guenter Roeck: Updated headline and description]
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a026e5ef61620e4f8fcacfabd88ad3c1d5f79cd1
Author: Josef Gajdusek <atx@atx.name>
Date:   Sun May 11 14:40:44 2014 +0200

    hwmon: (emc1403) fix inverted store_hyst()
    
    commit 17c048fc4bd95efea208a1920f169547d8588f1f upstream.
    
    Attempts to set the hysteresis value to a temperature below the target
    limit fails with "write error: Numerical result out of range" due to
    an inverted comparison.
    
    Signed-off-by: Josef Gajdusek <atx@atx.name>
    Reviewed-by: Jean Delvare <jdelvare@suse.de>
    [Guenter Roeck: Updated headline and description]
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d13ab64e7a9b68da0c1354085e2277778026b86a
Author: Johannes Berg <johannes.berg@intel.com>
Date:   Wed May 14 15:34:41 2014 +0200

    mac80211: fix on-channel remain-on-channel
    
    commit b4b177a5556a686909e643f1e9b6434c10de079f upstream.
    
    Jouni reported that if a remain-on-channel was active on the
    same channel as the current operating channel, then the ROC
    would start, but any frames transmitted using mgmt-tx on the
    same channel would get delayed until after the ROC.
    
    The reason for this is that the ROC starts, but doesn't have
    any handling for "remain on the same channel", so it stops
    the interface queues. The later mgmt-tx then puts the frame
    on the interface queues (since it's on the current operating
    channel) and thus they get delayed until after the ROC.
    
    To fix this, add some logic to handle remaining on the same
    channel specially and not stop the queues etc. in this case.
    This not only fixes the bug but also improves behaviour in
    this case as data frames etc. can continue to flow.
    
    Reported-by: Jouni Malinen <j@w1.fi>
    Tested-by: Jouni Malinen <j@w1.fi>
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ed32bcbb8d5711286f7e4944968a3dfa49c1d1ab
Author: Chen Yucong <slaoub@gmail.com>
Date:   Thu May 22 11:54:15 2014 -0700

    hwpoison, hugetlb: lock_page/unlock_page does not match for handling a free hugepage
    
    commit b985194c8c0a130ed155b71662e39f7eaea4876f upstream.
    
    For handling a free hugepage in memory failure, the race will happen if
    another thread hwpoisoned this hugepage concurrently.  So we need to
    check PageHWPoison instead of !PageHWPoison.
    
    If hwpoison_filter(p) returns true or a race happens, then we need to
    unlock_page(hpage).
    
    Signed-off-by: Chen Yucong <slaoub@gmail.com>
    Reviewed-by: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
    Tested-by: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
    Reviewed-by: Andi Kleen <ak@linux.intel.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4d5f17381ec0c7a5ead38d9a8dc25cfc245e3a81
Author: Anthony Iliopoulos <anthony.iliopoulos@huawei.com>
Date:   Wed May 14 11:29:48 2014 +0200

    x86, mm, hugetlb: Add missing TLB page invalidation for hugetlb_cow()
    
    commit 9844f5462392b53824e8b86726e7c33b5ecbb676 upstream.
    
    The invalidation is required in order to maintain proper semantics
    under CoW conditions. In scenarios where a process clones several
    threads, a thread operating on a core whose DTLB entry for a
    particular hugepage has not been invalidated, will be reading from
    the hugepage that belongs to the forked child process, even after
    hugetlb_cow().
    
    The thread will not see the updated page as long as the stale DTLB
    entry remains cached, the thread attempts to write into the page,
    the child process exits, or the thread gets migrated to a different
    processor.
    
    Signed-off-by: Anthony Iliopoulos <anthony.iliopoulos@huawei.com>
    Link: http://lkml.kernel.org/r/20140514092948.GA17391@server-36.huawei.corp
    Suggested-by: Shay Goikhman <shay.goikhman@huawei.com>
    Acked-by: Dave Hansen <dave.hansen@intel.com>
    Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 619131122438f5da4c9f8467a64f4f111c8ed823
Author: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Date:   Fri May 9 15:37:00 2014 -0700

    mm, thp: close race between mremap() and split_huge_page()
    
    commit dd18dbc2d42af75fffa60c77e0f02220bc329829 upstream.
    
    It's critical for split_huge_page() (and migration) to catch and freeze
    all PMDs on rmap walk.  It gets tricky if there's concurrent fork() or
    mremap() since usually we copy/move page table entries on dup_mm() or
    move_page_tables() without rmap lock taken.  To get it work we rely on
    rmap walk order to not miss any entry.  We expect to see destination VMA
    after source one to work correctly.
    
    But after switching rmap implementation to interval tree it's not always
    possible to preserve expected walk order.
    
    It works fine for dup_mm() since new VMA has the same vma_start_pgoff()
    / vma_last_pgoff() and explicitly insert dst VMA after src one with
    vma_interval_tree_insert_after().
    
    But on move_vma() destination VMA can be merged into adjacent one and as
    result shifted left in interval tree.  Fortunately, we can detect the
    situation and prevent race with rmap walk by moving page table entries
    under rmap lock.  See commit 38a76013ad80.
    
    Problem is that we miss the lock when we move transhuge PMD.  Most
    likely this bug caused the crash[1].
    
    [1] http://thread.gmane.org/gmane.linux.kernel.mm/96473
    
    Fixes: 108d6642ad81 ("mm anon rmap: remove anon_vma_moveto_tail")
    
    Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
    Reviewed-by: Andrea Arcangeli <aarcange@redhat.com>
    Cc: Rik van Riel <riel@redhat.com>
    Acked-by: Michel Lespinasse <walken@google.com>
    Cc: Dave Jones <davej@redhat.com>
    Cc: David Miller <davem@davemloft.net>
    Acked-by: Johannes Weiner <hannes@cmpxchg.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ef55c176c6c08237e68a9c79035ffef2240d39ca
Author: Johannes Berg <johannes.berg@intel.com>
Date:   Wed Mar 19 09:55:55 2014 +0100

    mac80211: fix suspend vs. authentication race
    
    commit 1a1cb744de160ee70086a77afff605bbc275d291 upstream.
    
    Since Stanislaw's patch removing the quiescing code, mac80211 had
    a race regarding suspend vs. authentication: as cfg80211 doesn't
    track authentication attempts, it can't abort them. Therefore the
    attempts may be kept running while suspending, which can lead to
    all kinds of issues, in at least some cases causing an error in
    iwlmvm firmware.
    
    Fix this by aborting the authentication attempt when suspending.
    
    Cc: stable@vger.kernel.org
    Fixes: 12e7f517029d ("mac80211: cleanup generic suspend/resume procedures")
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7cbb2301ae96a8c8874653904cb0de9860322f89
Author: Corey Minyard <cminyard@mvista.com>
Date:   Mon Apr 14 09:46:52 2014 -0500

    ipmi: Reset the KCS timeout when starting error recovery
    
    commit eb6d78ec213e6938559b801421d64714dafcf4b2 upstream.
    
    The OBF timer in KCS was not reset in one situation when error recovery
    was started, resulting in an immediate timeout.
    
    Reported-by: Bodo Stroesser <bstroesser@ts.fujitsu.com>
    Signed-off-by: Corey Minyard <cminyard@mvista.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 935c69acf0724b0c70df6a40d2d61e5cf350ee00
Author: Bodo Stroesser <bstroesser@ts.fujitsu.com>
Date:   Mon Apr 14 09:46:51 2014 -0500

    ipmi: Fix a race restarting the timer
    
    commit 48e8ac2979920ffa39117e2d725afa3a749bfe8d upstream.
    
    With recent changes it is possible for the timer handler to detect an
    idle interface and not start the timer, but the thread to start an
    operation at the same time.  The thread will not start the timer in that
    instance, resulting in the timer not running.
    
    Instead, move all timer operations under the lock and start the timer in
    the thread if it detect non-idle and the timer is not already running.
    Moving under locks allows the last timeout to be set in both the thread
    and the timer.  'Timer is not running' means that the timer is not
    pending and smi_timeout() is not running.  So we need a flag to detect
    this correctly.
    
    Also fix a few other timeout bugs: setting the last timeout when the
    interrupt has to be disabled and the timer started, and setting the last
    timeout in check_start_timer_thread possibly racing with the timer
    
    Signed-off-by: Corey Minyard <cminyard@mvista.com>
    Signed-off-by: Bodo Stroesser <bstroesser@ts.fujitsu.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 44d4037eb7aa629fde7083409177ad98652c0acf
Author: Jiri Bohac <jbohac@suse.cz>
Date:   Fri Apr 18 17:23:11 2014 +0200

    timer: Prevent overflow in apply_slack
    
    commit 98a01e779f3c66b0b11cd7e64d531c0e41c95762 upstream.
    
    On architectures with sizeof(int) < sizeof (long), the
    computation of mask inside apply_slack() can be undefined if the
    computed bit is > 32.
    
    E.g. with: expires = 0xffffe6f5 and slack = 25, we get:
    
    expires_limit = 0x20000000e
    bit = 33
    mask = (1 << 33) - 1  /* undefined */
    
    On x86, mask becomes 1 and and the slack is not applied properly.
    On s390, mask is -1, expires is set to 0 and the timer fires immediately.
    
    Use 1UL << bit to solve that issue.
    
    Suggested-by: Deborah Townsend <dstownse@us.ibm.com>
    Signed-off-by: Jiri Bohac <jbohac@suse.cz>
    Link: http://lkml.kernel.org/r/20140418152310.GA13654@midget.suse.cz
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 927983b44093d6892eae82dc3ec2fd38b6232374
Author: Stephen Warren <swarren@nvidia.com>
Date:   Fri Apr 4 16:31:05 2014 -0600

    gpu: host1x: handle the correct # of syncpt regs
    
    commit 22bbd5d949dc7fdd72a4e78e767fa09d8e54b446 upstream.
    
    BIT_WORD() truncates rather than rounds, so the loops in
    syncpt_thresh_isr() and _host1x_intr_disable_all_syncpt_intrs() use <=
    rather than < in an attempt to process the correct number of registers
    when rounding of the conversion of count of bits to count of words is
    necessary. However, when rounding isn't necessary because the value is
    already a multiple of the divisor (as is the case for all values of
    nb_pts the code actually sees), this causes one too many registers to
    be processed.
    
    Solve this by using and explicit DIV_ROUND_UP() call, rather than
    BIT_WORD(), and comparing with < rather than <=.
    
    Fixes: 7ede0b0bf3e2 ("gpu: host1x: Add syncpoint wait and interrupts")
    Signed-off-by: Stephen Warren <swarren@nvidia.com>
    Acked-By: Terje Bergstrom <tbergstrom@nvidia.com>
    Signed-off-by: Thierry Reding <treding@nvidia.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b67e840cb1982f32217375ac992a21b343540cb9
Author: Loic Poulain <loic.poulain@intel.com>
Date:   Thu Apr 24 11:38:56 2014 +0200

    8250_core: Fix unwanted TX chars write
    
    commit b08c9c317e3f7764a91d522cd031639ba42b98cc upstream.
    
    On transmit-hold-register empty, serial8250_tx_chars
    should be called only if we don't use DMA.
    DMA has its own tx cycle.
    
    Signed-off-by: Loic Poulain <loic.poulain@intel.com>
    Reviewed-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e179df5fd9250ae67f8e8fcb1e56a43ce820fcae
Author: Loic Poulain <loic.poulain@intel.com>
Date:   Thu Apr 24 11:34:48 2014 +0200

    serial: 8250: Fix thread unsafe __dma_tx_complete function
    
    commit f8fd1b0350d3a4581125f5eda6528f5a2c5f9183 upstream.
    
    __dma_tx_complete is not protected against concurrent
    call of serial8250_tx_dma. it can lead to circular tail
    index corruption or parallel call of serial_tx_dma on the
    same data portion.
    
    This patch fixes this issue by holding the port lock.
    
    Signed-off-by: Loic Poulain <loic.poulain@intel.com>
    Reviewed-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 96679ed69d1a369161e032894c7d2967a8e21031
Author: Linus Torvalds <torvalds@linux-foundation.org>
Date:   Tue Apr 22 13:49:40 2014 -0700

    mm: make fixup_user_fault() check the vma access rights too
    
    commit 1b17844b29ae042576bea588164f2f1e9590a8bc upstream.
    
    fixup_user_fault() is used by the futex code when the direct user access
    fails, and the futex code wants it to either map in the page in a usable
    form or return an error.  It relied on handle_mm_fault() to map the
    page, and correctly checked the error return from that, but while that
    does map the page, it doesn't actually guarantee that the page will be
    mapped with sufficient permissions to be then accessed.
    
    So do the appropriate tests of the vma access rights by hand.
    
    [ Side note: arguably handle_mm_fault() could just do that itself, but
      we have traditionally done it in the caller, because some callers -
      notably get_user_pages() - have been able to access pages even when
      they are mapped with PROT_NONE.  Maybe we should re-visit that design
      decision, but in the meantime this is the minimal patch. ]
    
    Found by Dave Jones running his trinity tool.
    
    Reported-by: Dave Jones <davej@redhat.com>
    Acked-by: Hugh Dickins <hughd@google.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ed04ce19bcb9518baf9233ed1d93332a4111025a
Author: Vincent Stehlé <vincent.stehle@laposte.net>
Date:   Fri Apr 4 08:43:18 2014 +0200

    topology: Fix compilation warning when not in SMP
    
    commit 53974e06603977f348ed978d75c426b0532daa67 upstream.
    
    The topology_##name() macro does not use its argument when CONFIG_SMP is not
    set, as it ultimately calls the cpu_data() macro.
    
    So we avoid maintaining a possibly unused `cpu' variable, to avoid the
    following compilation warning:
    
      drivers/base/topology.c: In function ‘show_physical_package_id’:
      drivers/base/topology.c:103:118: warning: unused variable ‘cpu’ [-Wunused-variable]
       define_id_show_func(physical_package_id);
    
      drivers/base/topology.c: In function ‘show_core_id’:
      drivers/base/topology.c:106:106: warning: unused variable ‘cpu’ [-Wunused-variable]
       define_id_show_func(core_id);
    
    This can be seen with e.g. x86 defconfig and CONFIG_SMP not set.
    
    Signed-off-by: Vincent Stehlé <vincent.stehle@laposte.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2ec453bfa65175f1dcf34b6f0ea0539b0e949b5b
Author: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
Date:   Mon Mar 31 19:51:14 2014 +0200

    pata_at91: fix ata_host_activate() failure handling
    
    commit 27aa64b9d1bd0d23fd692c91763a48309b694311 upstream.
    
    Add missing clk_put() call to ata_host_activate() failure path.
    
    Sergei says,
    
      "Hm, I have once fixed that (see that *if* (!ret)) but looks like a
       later commit 477c87e90853d136b188c50c0e4a93d01cad872e (ARM:
       at91/pata: use gpio_is_valid to check the gpio) broke it again. :-(
       Would be good if the changelog did mention that..."
    
    Cc: Andrew Victor <linux@maxim.org.za>
    Cc: Nicolas Ferre <nicolas.ferre@atmel.com>
    Cc: Jean-Christophe Plagniol-Villard <plagnioj@jcrosoft.com>
    Cc: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
    Signed-off-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0447d3173813aff149b9e660e6d8caac45f7cf52
Author: Krzysztof Kozlowski <k.kozlowski@samsung.com>
Date:   Wed Apr 16 14:36:45 2014 +0000

    clocksource: Exynos_mct: Register clock event after request_irq()
    
    commit 8db6e5104b77de5d0b7002b95069da0992a34be9 upstream.
    
    After hotplugging CPU1 the first call of interrupt handler for CPU1
    oneshot timer was called on CPU0 because it fired before setting IRQ
    affinity. Affected are SoCs where Multi Core Timer interrupts are
    shared (SPI), e.g. Exynos 4210.
    
    During setup of the MCT timers the clock event device should be
    registered after setting the affinity for interrupt. This will prevent
    starting the timer too early.
    
    Signed-off-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: Kyungmin Park <kyungmin.park@samsung.com>
    Cc: Marek Szyprowski <m.szyprowski@samsung.com>
    Cc: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
    Cc: Tomasz Figa <t.figa@samsung.com>,
    Cc: Daniel Lezcano <daniel.lezcano@linaro.org>,
    Cc: Kukjin Kim <kgene.kim@samsung.com>
    Cc: linux-arm-kernel@lists.infradead.org,
    Link: http://lkml.kernel.org/r/20140416143316.299247848@linutronix.de
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 73ce7ddb70a0c7603b37d375db4b99e2884bd666
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Wed Apr 16 14:36:44 2014 +0000

    genirq: Allow forcing cpu affinity of interrupts
    
    commit 01f8fa4f01d8362358eb90e412bd7ae18a3ec1ad upstream.
    
    The current implementation of irq_set_affinity() refuses rightfully to
    route an interrupt to an offline cpu.
    
    But there is a special case, where this is actually desired. Some of
    the ARM SoCs have per cpu timers which require setting the affinity
    during cpu startup where the cpu is not yet in the online mask.
    
    If we can't do that, then the local timer interrupt for the about to
    become online cpu is routed to some random online cpu.
    
    The developers of the affected machines tried to work around that
    issue, but that results in a massive mess in that timer code.
    
    We have a yet unused argument in the set_affinity callbacks of the irq
    chips, which I added back then for a similar reason. It was never
    required so it got not used. But I'm happy that I never removed it.
    
    That allows us to implement a sane handling of the above scenario. So
    the affected SoC drivers can add the required force handling to their
    interrupt chip, switch the timer code to irq_force_affinity() and
    things just work.
    
    This does not affect any existing user of irq_set_affinity().
    
    Tagged for stable to allow a simple fix of the affected SoC clock
    event drivers.
    
    Reported-and-tested-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: Kyungmin Park <kyungmin.park@samsung.com>
    Cc: Marek Szyprowski <m.szyprowski@samsung.com>
    Cc: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
    Cc: Tomasz Figa <t.figa@samsung.com>,
    Cc: Daniel Lezcano <daniel.lezcano@linaro.org>,
    Cc: Kukjin Kim <kgene.kim@samsung.com>
    Cc: linux-arm-kernel@lists.infradead.org,
    Link: http://lkml.kernel.org/r/20140416143315.717251504@linutronix.de
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2e020bb03a2db393dc7def211a5e62440db7d0b8
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Wed Apr 16 14:36:44 2014 +0000

    irqchip: Gic: Support forced affinity setting
    
    commit ffde1de64012c406dfdda8690918248b472f24e4 upstream.
    
    To support the affinity setting of per cpu timers in the early startup
    of a not yet online cpu, implement the force logic, which disables the
    cpu online check.
    
    Tagged for stable to allow a simple fix of the affected SoC clock
    event drivers.
    
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Tested-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
    Cc: Kyungmin Park <kyungmin.park@samsung.com>
    Cc: Marek Szyprowski <m.szyprowski@samsung.com>
    Cc: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
    Cc: Tomasz Figa <t.figa@samsung.com>,
    Cc: Daniel Lezcano <daniel.lezcano@linaro.org>,
    Cc: Kukjin Kim <kgene.kim@samsung.com>
    Cc: linux-arm-kernel@lists.infradead.org,
    Link: http://lkml.kernel.org/r/20140416143315.916984416@linutronix.de
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7d54b5cd8d53f22f6f754debd27dd1453ee1b0b0
Author: Steven Rostedt (Red Hat) <rostedt@goodmis.org>
Date:   Thu Apr 24 10:40:12 2014 -0400

    ftrace/module: Hardcode ftrace_module_init() call into load_module()
    
    commit a949ae560a511fe4e3adf48fa44fefded93e5c2b upstream.
    
    A race exists between module loading and enabling of function tracer.
    
    	CPU 1				CPU 2
    	-----				-----
      load_module()
       module->state = MODULE_STATE_COMING
    
    				register_ftrace_function()
    				 mutex_lock(&ftrace_lock);
    				 ftrace_startup()
    				  update_ftrace_function();
    				   ftrace_arch_code_modify_prepare()
    				    set_all_module_text_rw();
    				   <enables-ftrace>
    				    ftrace_arch_code_modify_post_process()
    				     set_all_module_text_ro();
    
    				[ here all module text is set to RO,
    				  including the module that is
    				  loading!! ]
    
       blocking_notifier_call_chain(MODULE_STATE_COMING);
        ftrace_init_module()
    
         [ tries to modify code, but it's RO, and fails!
           ftrace_bug() is called]
    
    When this race happens, ftrace_bug() will produces a nasty warning and
    all of the function tracing features will be disabled until reboot.
    
    The simple solution is to treate module load the same way the core
    kernel is treated at boot. To hardcode the ftrace function modification
    of converting calls to mcount into nops. This is done in init/main.c
    there's no reason it could not be done in load_module(). This gives
    a better control of the changes and doesn't tie the state of the
    module to its notifiers as much. Ftrace is special, it needs to be
    treated as such.
    
    The reason this would work, is that the ftrace_module_init() would be
    called while the module is in MODULE_STATE_UNFORMED, which is ignored
    by the set_all_module_text_ro() call.
    
    Link: http://lkml.kernel.org/r/1395637826-3312-1-git-send-email-indou.takao@jp.fujitsu.com
    
    Reported-by: Takao Indoh <indou.takao@jp.fujitsu.com>
    Acked-by: Rusty Russell <rusty@rustcorp.com.au>
    Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b64aa9e1e44275fb1bd549922ccab7c67a163aa1
Author: Leif Lindholm <leif.lindholm@linaro.org>
Date:   Thu Apr 17 18:42:00 2014 +0100

    mips: dts: Fix missing device_type="memory" property in memory nodes
    
    commit dfc44f8030653b345fc6fb337558c3a07536823f upstream.
    
    A few platforms lack a 'device_type = "memory"' for their memory
    nodes, relying on an old ppc quirk in order to discover its memory.
    Add the missing data so that all parsing code can find memory nodes
    correctly.
    
    Signed-off-by: Leif Lindholm <leif.lindholm@linaro.org>
    Cc: linux-mips@linux-mips.org
    Cc: devicetree@vger.kernel.org
    Cc: Mark Rutland <mark.rutland@arm.com>
    Acked-by: John Crispin <blogic@openwrt.org>
    Signed-off-by: Grant Likely <grant.likely@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 452d7fea71455f2aae448de9ad769749d86273ad
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Mon May 12 20:45:35 2014 +0000

    futex: Prevent attaching to kernel threads
    
    commit f0d71b3dcb8332f7971b5f2363632573e6d9486a upstream.
    
    We happily allow userspace to declare a random kernel thread to be the
    owner of a user space PI futex.
    
    Found while analysing the fallout of Dave Jones syscall fuzzer.
    
    We also should validate the thread group for private futexes and find
    some fast way to validate whether the "alleged" owner has RW access on
    the file which backs the SHM, but that's a separate issue.
    
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: Dave Jones <davej@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Darren Hart <darren@dvhart.com>
    Cc: Davidlohr Bueso <davidlohr@hp.com>
    Cc: Steven Rostedt <rostedt@goodmis.org>
    Cc: Clark Williams <williams@redhat.com>
    Cc: Paul McKenney <paulmck@linux.vnet.ibm.com>
    Cc: Lai Jiangshan <laijs@cn.fujitsu.com>
    Cc: Roland McGrath <roland@hack.frob.com>
    Cc: Carlos ODonell <carlos@redhat.com>
    Cc: Jakub Jelinek <jakub@redhat.com>
    Cc: Michael Kerrisk <mtk.manpages@gmail.com>
    Cc: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
    Link: http://lkml.kernel.org/r/20140512201701.194824402@linutronix.de
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cabef9fee397081ec3dfbde2955d4db675a96a4a
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Mon May 12 20:45:34 2014 +0000

    futex: Add another early deadlock detection check
    
    commit 866293ee54227584ffcb4a42f69c1f365974ba7f upstream.
    
    Dave Jones trinity syscall fuzzer exposed an issue in the deadlock
    detection code of rtmutex:
      http://lkml.kernel.org/r/20140429151655.GA14277@redhat.com
    
    That underlying issue has been fixed with a patch to the rtmutex code,
    but the futex code must not call into rtmutex in that case because
        - it can detect that issue early
        - it avoids a different and more complex fixup for backing out
    
    If the user space variable got manipulated to 0x80000000 which means
    no lock holder, but the waiters bit set and an active pi_state in the
    kernel is found we can figure out the recursive locking issue by
    looking at the pi_state owner. If that is the current task, then we
    can safely return -EDEADLK.
    
    The check should have been added in commit 59fa62451 (futex: Handle
    futex_pi OWNER_DIED take over correctly) already, but I did not see
    the above issue caused by user space manipulation back then.
    
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: Dave Jones <davej@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Darren Hart <darren@dvhart.com>
    Cc: Davidlohr Bueso <davidlohr@hp.com>
    Cc: Steven Rostedt <rostedt@goodmis.org>
    Cc: Clark Williams <williams@redhat.com>
    Cc: Paul McKenney <paulmck@linux.vnet.ibm.com>
    Cc: Lai Jiangshan <laijs@cn.fujitsu.com>
    Cc: Roland McGrath <roland@hack.frob.com>
    Cc: Carlos ODonell <carlos@redhat.com>
    Cc: Jakub Jelinek <jakub@redhat.com>
    Cc: Michael Kerrisk <mtk.manpages@gmail.com>
    Cc: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
    Link: http://lkml.kernel.org/r/20140512201701.097349971@linutronix.de
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>