patch to linux kernel 3.0.59
commit 0829a6cc39cfcd76caaf562b4254c95392463b62
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Thu Jan 17 08:48:09 2013 -0800

    Linux 3.0.59

commit 7633459bb303190c8c016817de45534b202a82d1
Author: Ian Abbott <abbotti@mev.co.uk>
Date:   Thu Jan 3 12:15:26 2013 +0000

    staging: comedi: Kconfig: COMEDI_NI_AT_A2150 should select COMEDI_FC

    commit 34ffb33e09132401872fe79e95c30824ce194d23 upstream.

    The 'ni_at_a2150' module links to `cfc_write_to_buffer` in the
    'comedi_fc' module, so selecting 'COMEDI_NI_AT_A2150' in the kernel config
    needs to also select 'COMEDI_FC'.

    Signed-off-by: Ian Abbott <abbotti@mev.co.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 57a750294d5d53a6ec49ac69e837216b1d982d78
Author: Ian Abbott <abbotti@mev.co.uk>
Date:   Fri Mar 30 17:14:58 2012 +0100

    staging: comedi: don't hijack hardware device private data

    commit c43435d7722134ed1fda58ce1025f41029bd58ad upstream.

    comedi_auto_config() associates a Comedi minor device number with an
    auto-configured hardware device and comedi_auto_unconfig() disassociates
    it.  Currently, these use the hardware device's private data pointer to
    point to some allocated storage holding the minor device number.  This
    is a bit of a waste of the hardware device's private data pointer,
    preventing it from being used for something more useful by the low-level
    comedi device drivers.  For example, it would make more sense if
    comedi_usb_auto_config() was passed a pointer to the struct
    usb_interface instead of the struct usb_device, but this cannot be done
    currently because the low-level comedi drivers already use the private
    data pointer in the struct usb_interface for something more useful.

    This patch stops the comedi core hijacking the hardware device's private
    data pointer.  Instead, comedi_auto_config() stores a pointer to the
    hardware device's struct device in the struct comedi_device_file_info
    associated with the minor device number, and comedi_auto_unconfig()
    calls new function comedi_find_board_minor() to recover the minor device
    number associated with the hardware device.

    Signed-off-by: Ian Abbott <abbotti@mev.co.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f387ee89aca7a06b376c27326afd114fe93e01c2
Author: Daniel Vetter <daniel.vetter@ffwll.ch>
Date:   Mon Jan 7 10:27:13 2013 +0100

    Revert "drm/i915: no lvds quirk for Zotac ZDBOX SD ID12/ID13"

    commit 48e858340dae43189a4e55647f6eac736766f828 upstream.

    This reverts commit 9756fe38d10b2bf90c81dc4d2f17d5632e135364.

    The bogus lvds output is actually a lvds->hdmi bridge, which we don't
    really support. But unconditionally disabling it breaks some existing
    setups.

    Reported-by: John Tapsell <johnflux@gmail.com>
    References: http://permalink.gmane.org/gmane.comp.freedesktop.xorg.drivers.intel/17237
    Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
    Cc: Luis Henriques <luis.henriques@canonical.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9d2fdadbde8314c8b55bb4a58af9584897298233
Author: Alexander Graf <agraf@suse.de>
Date:   Sat Oct 6 03:56:35 2012 +0200

    KVM: PPC: 44x: fix DCR read/write

    commit e43a028752fed049e4bd94ef895542f96d79fa74 upstream.

    When remembering the direction of a DCR transaction, we should write
    to the same variable that we interpret on later when doing vcpu_run
    again.

    Signed-off-by: Alexander Graf <agraf@suse.de>
    Signed-off-by: CAI Qian <caiqian@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5b8692bf7ca5beed9bb75cf97b47dc1d3e5691e2
Author: Woodhouse, David <david.woodhouse@intel.com>
Date:   Wed Dec 19 13:25:35 2012 +0000

    intel-iommu: Free old page tables before creating superpage

    commit 6491d4d02893d9787ba67279595990217177b351 upstream.

    The dma_pte_free_pagetable() function will only free a page table page
    if it is asked to free the *entire* 2MiB range that it covers. So if a
    page table page was used for one or more small mappings, it's likely to
    end up still present in the page tables... but with no valid PTEs.

    This was fine when we'd only be repopulating it with 4KiB PTEs anyway
    but the same virtual address range can end up being reused for a
    *large-page* mapping. And in that case were were trying to insert the
    large page into the second-level page table, and getting a complaint
    from the sanity check in __domain_mapping() because there was already a
    corresponding entry. This was *relatively* harmless; it led to a memory
    leak of the old page table page, but no other ill-effects.

    Fix it by calling dma_pte_clear_range (hopefully redundant) and
    dma_pte_free_pagetable() before setting up the new large page.

    Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
    Tested-by: Ravi Murty <Ravi.Murty@intel.com>
    Tested-by: Sudeep Dutt <sudeep.dutt@intel.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: CAI Qian <caiqian@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d668f92bf357683de292ce7538fc7b1186354004
Author: Benjamin Marzinski <bmarzins@redhat.com>
Date:   Wed Nov 7 00:38:06 2012 -0600

    GFS2: Test bufdata with buffer locked and gfs2_log_lock held

    commit 96e5d1d3adf56f1c7eeb07258f6a1a0a7ae9c489 upstream.

    In gfs2_trans_add_bh(), gfs2 was testing if a there was a bd attached to the
    buffer without having the gfs2_log_lock held. It was then assuming it would
    stay attached for the rest of the function. However, without either the log
    lock being held of the buffer locked, __gfs2_ail_flush() could detach bd at any
    time.  This patch moves the locking before the test.  If there isn't a bd
    already attached, gfs2 can safely allocate one and attach it before locking.
    There is no way that the newly allocated bd could be on the ail list,
    and thus no way for __gfs2_ail_flush() to detach it.

    Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
    Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
    [bwh: Backported to 3.2: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 961161c905e212ed2510fb0612549a3d1aefb495
Author: Sarah Sharp <sarah.a.sharp@linux.intel.com>
Date:   Mon Dec 17 14:12:35 2012 -0800

    xhci: Handle HS bulk/ctrl endpoints that don't NAK.

    commit 55c1945edaac94c5338a3647bc2e85ff75d9cf36 upstream.

    A high speed control or bulk endpoint may have bInterval set to zero,
    which means it does not NAK.  If bInterval is non-zero, it means the
    endpoint NAKs at a rate of 2^(bInterval - 1).

    The xHCI code to compute the NAK interval does not handle the special
    case of zero properly.  The current code unconditionally subtracts one
    from bInterval and uses it as an exponent.  This causes a very large
    bInterval to be used, and warning messages like these will be printed:

    usb 1-1: ep 0x1 - rounding interval to 32768 microframes, ep desc says 0 microframes

    This may cause the xHCI host hardware to reject the Configure Endpoint
    command, which means the HS device will be unusable under xHCI ports.

    This patch should be backported to kernels as old as 2.6.31, that contain
    commit dfa49c4ad120a784ef1ff0717168aa79f55a483a "USB: xhci - fix math in
    xhci_get_endpoint_interval()".

    Reported-by: Vincent Pelletier <plr.vincent@gmail.com>
    Suggested-by: Alan Stern <stern@rowland.harvard.edu>
    Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b30765e89105c321ed5a5259dc6b05752cbc8137
Author: Oliver Neukum <oliver@neukum.org>
Date:   Thu Nov 29 15:05:57 2012 +0100

    USB: hub: handle claim of enabled remote wakeup after reset

    commit 07e72b95f5038cc82304b9a4a2eb7f9fc391ea68 upstream.

    Some touchscreens have buggy firmware which claims
    remote wakeup to be enabled after a reset. They nevertheless
    crash if the feature is cleared by the host.
    Add a check for reset resume before checking for
    an enabled remote wakeup feature. On compliant
    devices the feature must be cleared after a reset anyway.

    Signed-off-by: Oliver Neukum <oneukum@suse.de>
    Acked-by: Alan Stern <stern@rowland.harvard.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e16e202710af9cc74b01c60ea1e338e3e954e6ed
Author: Sarah Sharp <sarah.a.sharp@linux.intel.com>
Date:   Wed Nov 14 17:16:52 2012 -0800

    USB: Increase reset timeout.

    commit 77c7f072c87fa951e9a74805febf26466f31170c upstream.

    John's NEC 0.96 xHCI host controller needs a longer timeout for a warm
    reset to complete.  The logs show it takes 650ms to complete the warm
    reset, so extend the hub reset timeout to 800ms to be on the safe side.

    This commit should be backported to kernels as old as 3.2, that contain
    the commit 75d7cf72ab9fa01dc70877aa5c68e8ef477229dc "usbcore: refine
    warm reset logic".

    Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
    Acked-by: Alan Stern <stern@rowland.harvard.edu>
    Reported-by: John Covici <covici@ccs.covici.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fca884e203ab0faf0e505f10d302ee0a2ffb54c7
Author: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Date:   Tue Nov 20 13:23:15 2012 +0100

    usb: gadget: dummy: fix enumeration with g_multi

    commit 1d16638e3b9cc195bac18a8fcbca748f33c1bc24 upstream.

    If we do have endpoints named like "ep-a" then bEndpointAddress is
    counted internally by the gadget framework.

    If we do have endpoints named like "ep-1" then bEndpointAddress is
    assigned from the digit after "ep-".

    If we do have both, then it is likely that after we used up the
    "generic" endpoints we will use the digits and thus assign one
    bEndpointAddress to multiple endpoints.

    This theory can be proofed by using the completely enabled g_multi.
    Without this patch, the mass storage won't enumerate and times out
    because it shares endpoints with RNDIS.

    This patch also adds fills up the endpoints list so we have in total
    endpoints 1 to 15 in + out available while some of them are restricted
    to certain types like BULK or ISO. Without this change the nokia gadget
    won't load because the system does not provide enough (BULK) endpoints
    but it did before ep-a - ep-f were removed.

    Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
    Acked-by: Alan Stern <stern@rowland.harvard.edu>
    Signed-off-by: Felipe Balbi <balbi@ti.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6d9a5f52d4604191d62f51b58ab7fd2320931f53
Author: Denis N Ladin <denladin@gmail.com>
Date:   Wed Dec 26 18:29:44 2012 +0500

    USB: cdc-acm: Add support for "PSC Scanning, Magellan 800i"

    commit 036915a7a402753c05b8d0529f5fd08805ab46d0 upstream.

    Adding support "PSC Scanning, Magellan 800i" in cdc-acm

    Very simple, but very necessary.
    Suitable for all versions of the kernel > 2.6

    Signed-off-by: Denis N Ladin <denladin@gmail.com>
    Acked-by: Oliver Neukum <oneukum@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit edce154f05d0c7e474e01c833d4c3522987fa125
Author: Tomasz Mloduchowski <q@qdot.me>
Date:   Sun Jan 13 23:32:53 2013 +0100

    usb: ftdi_sio: Crucible Technologies COMET Caller ID - pid added

    commit 8cf65dc386f3634a43312f436cc7a935476a40c4 upstream.

    Simple fix to add support for Crucible Technologies COMET Caller ID
    USB decoder - a device containing FTDI USB/Serial converter chip,
    handling 1200bps CallerID messages decoded from the phone line -
    adding correct USB PID is sufficient.

    Tested to apply cleanly and work flawlessly against 3.6.9, 3.7.0-rc8
    and 3.8.0-rc3 on both amd64 and x86 arches.

    Signed-off-by: Tomasz Mloduchowski <q@qdot.me>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 54923deb52fa43659a0f0c9edc7cec13201c9663
Author: Bjørn Mork <bjorn@mork.no>
Date:   Fri Dec 28 17:29:52 2012 +0100

    USB: option: add Telekom Speedstick LTE II

    commit 5ec0085440ef8c2cf50002b34d5a504ee12aa2bf upstream.

    also known as Alcatel One Touch L100V LTE

    The driver description files gives these names to the vendor specific
    functions on this modem:

     Application1: VID_1BBB&PID_011E&MI_00
     Application2: VID_1BBB&PID_011E&MI_01
     Modem:        VID_1BBB&PID_011E&MI_03
     Ethernet:     VID_1BBB&PID_011E&MI_04

    Reported-by: Thomas Schäfer <tschaefer@t-online.de>
    Signed-off-by: Bjørn Mork <bjorn@mork.no>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 40d3aadc78529b6a1fb37b5ed554d041d80ceafa
Author: Quentin.Li <snowmanli88@163.com>
Date:   Wed Dec 26 16:58:22 2012 +0800

    USB: option: Add new MEDIATEK PID support

    commit 94a85b633829b946eef53fc1825d526312fb856f upstream.

    In option.c, add some new MEDIATEK PIDs support for MEDIATEK new products. This
    is a MEDIATEK inc. release patch.

    Signed-off-by: Quentin.Li <snowmanli88@163.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit eaf103dbb8e51967bdee9ea89059176ea4c87465
Author: Bjørn Mork <bjorn@mork.no>
Date:   Wed Dec 19 15:15:17 2012 +0100

    USB: option: blacklist network interface on ZTE MF880

    commit fab38246f318edcd0dcb8fd3852a47cf8938878a upstream.

    The driver description files gives these names to the vendor specific
    functions on this modem:

     diag: VID_19D2&PID_0284&MI_00
     nmea: VID_19D2&PID_0284&MI_01
     at:   VID_19D2&PID_0284&MI_02
     mdm:  VID_19D2&PID_0284&MI_03
     net:  VID_19D2&PID_0284&MI_04

    Signed-off-by: Bjørn Mork <bjorn@mork.no>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit aa6e90f665c2551aa20892e225fb2dc12be25c8a
Author: Dzianis Kahanovich <mahatma@bspu.unibel.by>
Date:   Mon Dec 3 16:06:26 2012 +0300

    USB: option: add Nexpring NP10T terminal id

    commit ad86e58661b38b279b7519d4e49c7a19dc1654bb upstream.

    Hyundai Petatel Inc. Nexpring NP10T terminal (EV-DO rev.A USB modem) ID

    Signed-off-by: Denis Kaganovich <mahatma@eu.by>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9e2bd12a24c248e9b31af76f18f01c88ae32cd95
Author: Johannes Berg <johannes.berg@intel.com>
Date:   Thu Dec 13 23:08:52 2012 +0100

    mac80211: use del_timer_sync for final sta cleanup timer deletion

    commit a56f992cdabc63f56b4b142885deebebf936ff76 upstream.

    This is a very old bug, but there's nothing that prevents the
    timer from running while the module is being removed when we
    only do del_timer() instead of del_timer_sync().

    The timer should normally not be running at this point, but
    it's not clearly impossible (or we could just remove this.)

    Tested-by: Ben Greear <greearb@candelatech.com>
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0c3b520e7407b92ebdcc21b80c8f7f8539601ae3
Author: Jerome Glisse <jglisse@redhat.com>
Date:   Tue Jan 8 18:41:01 2013 -0500

    radeon/kms: force rn50 chip to always report connected on analog output

    commit 51861d4eebc2ddc25c77084343d060fa79f6e291 upstream.

    Those rn50 chip are often connected to console remoting hw and load
    detection often fails with those. Just don't try to load detect and
    report connect.

    Signed-off-by: Jerome Glisse <jglisse@redhat.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 71a1306551e811989c0164c614845fea352d8b57
Author: Samuel Thibault <samuel.thibault@ens-lyon.org>
Date:   Mon Jan 7 22:03:51 2013 +0100

    staging: speakup: avoid out-of-range access in synth_add()

    commit 6102c48bd421074a33e102f2ebda3724e8d275f9 upstream.

    Check that array index is in-bounds before accessing the synths[] array.

    Signed-off-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
    Cc: Nickolai Zeldovich <nickolai@csail.mit.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 36aa8707613d57452ebfda30812e8715f019c453
Author: Nickolai Zeldovich <nickolai@csail.mit.edu>
Date:   Sat Jan 5 14:17:45 2013 -0500

    staging: speakup: avoid out-of-range access in synth_init()

    commit ae428655b826f2755a8101b27beda42a275ef8ad upstream.

    Check that array index is in-bounds before accessing the synths[] array.

    Signed-off-by: Nickolai Zeldovich <nickolai@csail.mit.edu>
    Cc: Samuel Thibault <samuel.thibault@ens-lyon.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 30571057bbec7bd1f2850f308d131eba4c432225
Author: Larry Finger <Larry.Finger@lwfinger.net>
Date:   Sat Dec 29 11:36:53 2012 -0600

    staging: r8712u: Add new device ID

    commit da849a92d3bafaf24d770e971c2c9e5c3f60b5d1 upstream.

    The ISY IWL 1000 USB WLAN stick with USB ID 050d:11f1 is a clone of
    the Belkin F7D1101 V1 device.

    Reported-by: Thomas Hartmann <hartmann@ict.tuwien.ac.at>
    Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
    Cc: Thomas Hartmann <hartmann@ict.tuwien.ac.at>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2d8a66efb832e17e906415a4e563182258cc0ab2
Author: Ian Abbott <abbotti@mev.co.uk>
Date:   Fri Jan 4 11:33:21 2013 +0000

    staging: comedi: comedi_test: fix race when cancelling command

    commit c0729eeefdcd76db338f635162bf0739fd2c5f6f upstream.

    Éric Piel reported a kernel oops in the "comedi_test" module.  It was a
    NULL pointer dereference within `waveform_ai_interrupt()` (actually a
    timer function) that sometimes occurred when a running asynchronous
    command is cancelled (either by the `COMEDI_CANCEL` ioctl or by closing
    the device file).

    This seems to be a race between the caller of `waveform_ai_cancel()`
    which on return from that function goes and tears down the running
    command, and the timer function which uses the command.  In particular,
    `async->cmd.chanlist` gets freed (and the pointer set to NULL) by
    `do_become_nonbusy()` in "comedi_fops.c" but a previously scheduled
    `waveform_ai_interrupt()` timer function will dereference that pointer
    regardless, leading to the oops.

    Fix it by replacing the `del_timer()` call in `waveform_ai_cancel()`
    with `del_timer_sync()`.

    Signed-off-by: Ian Abbott <abbotti@mev.co.uk>
    Reported-by: Éric Piel <piel@delmic.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bf302ba15f9fc5fa2d84c6eaa2e740a0e0bb596b
Author: Ian Abbott <abbotti@mev.co.uk>
Date:   Tue Dec 4 15:59:55 2012 +0000

    staging: comedi: prevent auto-unconfig of manually configured devices

    commit 7d3135af399e92cf4c9bbc5f86b6c140aab3b88c upstream.

    When a low-level comedi driver auto-configures a device, a `struct
    comedi_dev_file_info` is allocated (as well as a `struct
    comedi_device`) by `comedi_alloc_board_minor()`.  A pointer to the
    hardware `struct device` is stored as a cookie in the `struct
    comedi_dev_file_info`.  When the low-level comedi driver
    auto-unconfigures the device, `comedi_auto_unconfig()` uses the cookie
    to find the `struct comedi_dev_file_info` so it can detach the comedi
    device from the driver, clean it up and free it.

    A problem arises if the user manually unconfigures and reconfigures the
    comedi device using the `COMEDI_DEVCONFIG` ioctl so that is no longer
    associated with the original hardware device.  The problem is that the
    cookie is not cleared, so that a call to `comedi_auto_unconfig()` from
    the low-level driver will still find it, detach it, clean it up and free
    it.

    Stop this problem occurring by always clearing the `hardware_device`
    cookie in the `struct comedi_dev_file_info` whenever the
    `COMEDI_DEVCONFIG` ioctl call is successful.

    Signed-off-by: Ian Abbott <abbotti@mev.co.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e2abf662bcedc0be6f73e7575cc203a5e3c9262c
Author: Mike Dunn <mikedunn@newsguy.com>
Date:   Mon Jan 7 13:55:12 2013 -0800

    ALSA: pxa27x: fix ac97 cold reset

    commit 41b645c8624df6ace020a8863ad1449d69140f7d upstream.

    Cold reset on the pxa27x currently fails and

         pxa2xx_ac97_try_cold_reset: cold reset timeout (GSR=0x44)

    appears in the kernel log.  Through trial-and-error (the pxa270 developer's
    manual is mostly incoherent on the topic of ac97 reset), I got cold reset to
    complete by setting the WARM_RST bit in the GCR register (and later noticed that
    pxa3xx does this for cold reset as well).  Also, a timeout loop is needed to
    wait for the reset to complete.

    Tested on a palm treo 680 machine.

    Signed-off-by: Mike Dunn <mikedunn@newsguy.com>
    Acked-by: Igor Grinberg <grinberg@compulab.co.il>
    Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 639fd95292222bf03e1bb8616437b261321e1536
Author: Mark Brown <broonie@opensource.wolfsonmicro.com>
Date:   Fri Jan 4 21:18:12 2013 +0000

    ASoC: wm2000: Fix sense of speech clarity enable

    commit 267f8fa2e1eef0612b2007e1f1846bcbc35cc1fa upstream.

    Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 93b40265d0c287271b19320574a76070d76d5a3b
Author: Eric Wong <normalperson@yhbt.net>
Date:   Tue Jan 1 21:20:27 2013 +0000

    epoll: prevent missed events on EPOLL_CTL_MOD

    commit 128dd1759d96ad36c379240f8b9463e8acfd37a1 upstream.

    EPOLL_CTL_MOD sets the interest mask before calling f_op->poll() to
    ensure events are not missed.  Since the modifications to the interest
    mask are not protected by the same lock as ep_poll_callback, we need to
    ensure the change is visible to other CPUs calling ep_poll_callback.

    We also need to ensure f_op->poll() has an up-to-date view of past
    events which occured before we modified the interest mask.  So this
    barrier also pairs with the barrier in wq_has_sleeper().

    This should guarantee either ep_poll_callback or f_op->poll() (or both)
    will notice the readiness of a recently-ready/modified item.

    This issue was encountered by Andreas Voellmy and Junchang(Jason) Wang in:
    http://thread.gmane.org/gmane.linux.kernel/1408782/

    Signed-off-by: Eric Wong <normalperson@yhbt.net>
    Cc: Hans Verkuil <hans.verkuil@cisco.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Jonathan Corbet <corbet@lwn.net>
    Cc: Al Viro <viro@zeniv.linux.org.uk>
    Cc: Davide Libenzi <davidel@xmailserver.org>
    Cc: Hans de Goede <hdegoede@redhat.com>
    Cc: Mauro Carvalho Chehab <mchehab@infradead.org>
    Cc: David Miller <davem@davemloft.net>
    Cc: Eric Dumazet <eric.dumazet@gmail.com>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Andreas Voellmy <andreas.voellmy@yale.edu>
    Tested-by: "Junchang(Jason) Wang" <junchang.wang@yale.edu>
    Cc: netdev@vger.kernel.org
    Cc: linux-fsdevel@vger.kernel.org
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    [bwh: Backported to 3.2: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b18401af7f51cddd5d2e03c9b800ba7dd60f18a0
Author: Eric Dumazet <eric.dumazet@gmail.com>
Date:   Fri Jan 4 00:34:22 2013 +0000

    rtnetlink: fix rtnl_calcit() and rtnl_dump_ifinfo()

    commit a4b64fbe482c7766f7925f03067fc637716bfa3f upstream.

    nlmsg_parse() might return an error, so test its return value before
    potential random memory accesses.

    Errors introduced in commit 115c9b81928 (rtnetlink: Fix problem with
    buffer allocation)

    Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
    Acked-by: Greg Rose <gregory.v.rose@intel.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Cc: Ben Hutchings <bhutchings@solarflare.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a0d3aa1f04a7430fc80f6f1a7aaaaf495da8d8e1
Author: Greg Rose <gregory.v.rose@intel.com>
Date:   Fri Jan 4 00:33:34 2013 +0000

    rtnetlink: Fix problem with buffer allocation

    commit 115c9b81928360d769a76c632bae62d15206a94a upstream.

    Implement a new netlink attribute type IFLA_EXT_MASK.  The mask
    is a 32 bit value that can be used to indicate to the kernel that
    certain extended ifinfo values are requested by the user application.
    At this time the only mask value defined is RTEXT_FILTER_VF to
    indicate that the user wants the ifinfo dump to send information
    about the VFs belonging to the interface.

    This patch fixes a bug in which certain applications do not have
    large enough buffers to accommodate the extra information returned
    by the kernel with large numbers of SR-IOV virtual functions.
    Those applications will not send the new netlink attribute with
    the interface info dump request netlink messages so they will
    not get unexpectedly large request buffers returned by the kernel.

    Modifies the rtnl_calcit function to traverse the list of net
    devices and compute the minimum buffer size that can hold the
    info dumps of all matching devices based upon the filter passed
    in via the new netlink attribute filter mask.  If no filter
    mask is sent then the buffer allocation defaults to NLMSG_GOODSIZE.

    With this change it is possible to add yet to be defined netlink
    attributes to the dump request which should make it fairly extensible
    in the future.

    Signed-off-by: Greg Rose <gregory.v.rose@intel.com>
    Acked-by: Greg Rose <gregory.v.rose@intel.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.0:
     - Adjust context
     - Drop the change in do_setlink() that reverts commit f18da1456581
       ('net: RTNETLINK adjusting values of min_ifinfo_dump_size'), which
       was never applied here]
    Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2e3cbdeae8e4d13087657d95ed7a5be57dc9695e
Author: Greg Rose <gregory.v.rose@intel.com>
Date:   Fri Jan 4 00:32:54 2013 +0000

    rtnetlink: Compute and store minimum ifinfo dump size

    commit c7ac8679bec9397afe8918f788cbcef88c38da54 upstream.

    The message size allocated for rtnl ifinfo dumps was limited to
    a single page.  This is not enough for additional interface info
    available with devices that support SR-IOV and caused a bug in
    which VF info would not be displayed if more than approximately
    40 VFs were created per interface.

    Implement a new function pointer for the rtnl_register service that will
    calculate the amount of data required for the ifinfo dump and allocate
    enough data to satisfy the request.

    Signed-off-by: Greg Rose <gregory.v.rose@intel.com>
    Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
    Cc: Ben Hutchings <bhutchings@solarflare.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4a6cf0c4f4f8465d61adbf3aaaec2bd100e30d97
Author: Zhang Rui <rui.zhang@intel.com>
Date:   Tue Dec 4 23:23:16 2012 +0100

    ACPI : do not use Lid and Sleep button for S5 wakeup

    commit b7e383046c2c7c13ad928cd7407eafff758ddd4b upstream.

    When system enters power off, the _PSW of Lid device is enabled.
    But this may cause the system to reboot instead of power off.

    A proper way to fix this is to always disable lid wakeup capability for S5.

    References: https://bugzilla.kernel.org/show_bug.cgi?id=35262
    Signed-off-by: Zhang Rui <rui.zhang@intel.com>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Cc: Joseph Salisbury <joseph.salisbury@canonical.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5e3fe67e02c53e5a5fcf0e2b0d91dd93f757d50b
Author: Andre Przywara <andre.przywara@amd.com>
Date:   Wed Oct 31 17:20:50 2012 +0100

    x86, amd: Disable way access filter on Piledriver CPUs

    commit 2bbf0a1427c377350f001fbc6260995334739ad7 upstream.

    The Way Access Filter in recent AMD CPUs may hurt the performance of
    some workloads, caused by aliasing issues in the L1 cache.
    This patch disables it on the affected CPUs.

    The issue is similar to that one of last year:
    http://lkml.indiana.edu/hypermail/linux/kernel/1107.3/00041.html
    This new patch does not replace the old one, we just need another
    quirk for newer CPUs.

    The performance penalty without the patch depends on the
    circumstances, but is a bit less than the last year's 3%.

    The workloads affected would be those that access code from the same
    physical page under different virtual addresses, so different
    processes using the same libraries with ASLR or multiple instances of
    PIE-binaries. The code needs to be accessed simultaneously from both
    cores of the same compute unit.

    More details can be found here:
    http://developer.amd.com/Assets/SharedL1InstructionCacheonAMD15hCPU.pdf

    CPUs affected are anything with the core known as Piledriver.
    That includes the new parts of the AMD A-Series (aka Trinity) and the
    just released new CPUs of the FX-Series (aka Vishera).
    The model numbering is a bit odd here: FX CPUs have model 2,
    A-Series has model 10h, with possible extensions to 1Fh. Hence the
    range of model ids.

    Signed-off-by: Andre Przywara <osp@andrep.de>
    Link: http://lkml.kernel.org/r/1351700450-9277-1-git-send-email-osp@andrep.de
    Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
    Signed-off-by: CAI Qian <caiqian@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 457a972f3038b8de2eba76dc4b7f9117f1084f7e
Author: David Rientjes <rientjes@google.com>
Date:   Tue May 29 15:06:23 2012 -0700

    thp, memcg: split hugepage for memcg oom on cow

    commit 1f1d06c34f7675026326cd9f39ff91e4555cf355 upstream.

    On COW, a new hugepage is allocated and charged to the memcg.  If the
    system is oom or the charge to the memcg fails, however, the fault
    handler will return VM_FAULT_OOM which results in an oom kill.

    Instead, it's possible to fallback to splitting the hugepage so that the
    COW results only in an order-0 page being allocated and charged to the
    memcg which has a higher liklihood to succeed.  This is expensive
    because the hugepage must be split in the page fault handler, but it is
    much better than unnecessarily oom killing a process.

    Signed-off-by: David Rientjes <rientjes@google.com>
    Cc: Andrea Arcangeli <aarcange@redhat.com>
    Cc: Johannes Weiner <jweiner@redhat.com>
    Acked-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
    Cc: Michal Hocko <mhocko@suse.cz>
    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 cdfcbd8d74fdfd7a0d55330a1b60411b153ae71b
Author: Namjae Jeon <namjae.jeon@samsung.com>
Date:   Wed Oct 10 00:09:12 2012 +0900

    udf: don't increment lenExtents while writing to a hole

    commit fb719c59bdb4fca86ee1fd1f42ab3735ca12b6b2 upstream.

    Incrementing lenExtents even while writing to a hole is bad
    for performance as calls to udf_discard_prealloc and
    udf_truncate_tail_extent would not return from start if
    isize != lenExtents

    Signed-off-by: Namjae Jeon <namjae.jeon@samsung.com>
    Signed-off-by: Ashish Sangwan <a.sangwan@samsung.com>
    Signed-off-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Shuah Khan <shuah.khan@hp.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit de3ecca3e3d55f2bb3118839a8fd709362d55678
Author: Namjae Jeon <namjae.jeon@samsung.com>
Date:   Wed Oct 10 00:08:56 2012 +0900

    udf: fix memory leak while allocating blocks during write

    commit 2fb7d99d0de3fd8ae869f35ab682581d8455887a upstream.

    Need to brelse the buffer_head stored in cur_epos and next_epos.

    Signed-off-by: Namjae Jeon <namjae.jeon@samsung.com>
    Signed-off-by: Ashish Sangwan <a.sangwan@samsung.com>
    Signed-off-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Shuah Khan <shuah.khan@hp.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 39a731949954614cea44b92e80bbb4bb54832785
Author: Ed Cashin <ecashin@coraid.com>
Date:   Sat Jan 12 06:43:35 2013 -0500

    aoe: do not call bdi_init after blk_alloc_queue

    commit 0a41409c518083133e79015092585d68915865be upstream, but doesn't
    apply, so this version is different for older kernels than 3.7.x

    blk_alloc_queue has already done a bdi_init, so do not bdi_init
    again in aoeblk_gdalloc.  The extra call causes list corruption
    in the per-CPU backing dev info stats lists.

    Affected users see console WARNINGs about list_del corruption on
    percpu_counter_destroy when doing "rmmod aoe" or "aoeflush -a"
    when AoE targets have been detected and initialized by the
    system.

    The patch below applies to v3.6.11, with its v47 aoe driver.  It
    is expected to apply to all currently maintained stable kernels
    except 3.7.y.  A related but different fix has been posted for
    3.7.y.

    References:

      RedHat bugzilla ticket with original report
      https://bugzilla.redhat.com/show_bug.cgi?id=853064

      LKML discussion of bug and fix
      http://thread.gmane.org/gmane.linux.kernel/1416336/focus=1416497

    Reported-by: Josh Boyer <jwboyer@redhat.com>
    Signed-off-by: Ed Cashin <ecashin@coraid.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a4202fd727f6bf57827061104a60307e78124ea2
Author: Theodore Ts'o <tytso@mit.edu>
Date:   Thu Dec 27 01:42:48 2012 -0500

    ext4: lock i_mutex when truncating orphan inodes

    commit 721e3eba21e43532e438652dd8f1fcdfce3187e7 upstream.

    Commit c278531d39 added a warning when ext4_flush_unwritten_io() is
    called without i_mutex being taken.  It had previously not been taken
    during orphan cleanup since races weren't possible at that point in
    the mount process, but as a result of this c278531d39, we will now see
    a kernel WARN_ON in this case.  Take the i_mutex in
    ext4_orphan_cleanup() to suppress this warning.

    Reported-by: Alexander Beregalov <a.beregalov@gmail.com>
    Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
    Reviewed-by: Zheng Liu <wenqing.lz@taobao.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1ba9a27ec24b133799bc1b8a77d733c4015d0abd
Author: Michael Tokarev <mjt@tls.msk.ru>
Date:   Tue Dec 25 14:08:16 2012 -0500

    ext4: do not try to write superblock on ro remount w/o journal

    commit d096ad0f79a782935d2e06ae8fb235e8c5397775 upstream.

    When a journal-less ext4 filesystem is mounted on a read-only block
    device (blockdev --setro will do), each remount (for other, unrelated,
    flags, like suid=>nosuid etc) results in a series of scary messages
    from kernel telling about I/O errors on the device.

    This is becauese of the following code ext4_remount():

           if (sbi->s_journal == NULL)
                    ext4_commit_super(sb, 1);

    at the end of remount procedure, which forces writing (flushing) of
    a superblock regardless whenever it is dirty or not, if the filesystem
    is readonly or not, and whenever the device itself is readonly or not.

    We only need call ext4_commit_super when the file system had been
    previously mounted read/write.

    Thanks to Eric Sandeen for help in diagnosing this issue.

    Signed-off-By: Michael Tokarev <mjt@tls.msk.ru>
    Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7c558b7eb837ca7bc014af2f5509be143c3c3670
Author: Jan Kara <jack@suse.cz>
Date:   Fri Dec 21 00:15:51 2012 -0500

    jbd2: fix assertion failure in jbd2_journal_flush()

    commit d7961c7fa4d2e3c3f12be67e21ba8799b5a7238a upstream.

    The following race is possible between start_this_handle() and someone
    calling jbd2_journal_flush().

    Process A                              Process B
    start_this_handle().
      if (journal->j_barrier_count) # false
      if (!journal->j_running_transaction) { #true
        read_unlock(&journal->j_state_lock);
                                           jbd2_journal_lock_updates()
                                           jbd2_journal_flush()
                                             write_lock(&journal->j_state_lock);
                                             if (journal->j_running_transaction) {
                                               # false
                                             ... wait for committing trans ...
                                             write_unlock(&journal->j_state_lock);
        ...
        write_lock(&journal->j_state_lock);
        if (!journal->j_running_transaction) { # true
          jbd2_get_transaction(journal, new_transaction);
        write_unlock(&journal->j_state_lock);
        goto repeat; # eventually blocks on j_barrier_count > 0
                                             ...
                                             J_ASSERT(!journal->j_running_transaction);
                                               # fails

    We fix the race by rechecking j_barrier_count after reacquiring j_state_lock
    in exclusive mode.

    Reported-by: yjwsignal@empal.com
    Signed-off-by: Jan Kara <jack@suse.cz>
    Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8cbe63802ddac6b242e4a4293fc338fa7808272c
Author: Forrest Liu <forrestl@synology.com>
Date:   Mon Dec 17 09:55:39 2012 -0500

    ext4: fix extent treE feature.
    The write in mxsfb_disable_controller() sets the data_cnt for the LCD
    DMA to 0 which obviously means the max. count for the LCD DMA and
    leads to overwriting arbitrary memory when the display is unblanked.

    Signed-off-by: Lothar Waßmann <LW@KARO-electronics.de>
    Acked-by: Juergen Beisert <jbe@pengutronix.de>
    Tested-by: Lauri Hintsala <lauri.hintsala@bluegiga.net>
    Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f125f803570b6e617ea417d08091703e81951d87
Author: Malcolm Priestley <tvboxspy@gmail.com>
Date:   Sun Nov 11 16:07:57 2012 +0000

    staging: vt6656: 64bit fixes: vCommandTimerWait change calculation of timer.

    commit 70e227790d4ee4590023d8041a3485f8053593fc upstream.

    The timer appears to run too fast/race on 64 bit systems.

    Using msecs_to_jiffies seems to cause a deadlock on 64 bit.

    A calculation of (MSecond * HZ) / 1000 appears to run satisfactory.

    Change BSSIDInfoCount to u32.

    After this patch the driver can be successfully connect on little endian 64/32 bit systems.

    Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit afaac0d6cd73f303df1e456905de6a4364d2a81d
Author: Malcolm Priestley <tvboxspy@gmail.com>
Date:   Sun Nov 11 15:49:59 2012 +0000

    staging: vt6656: 64bit fixes: key.c/h change unsigned long to u32

    commit c0d05b305b00c698b0a8c1b3d46c9380bce9db45 upstream.

    Fixes long issues.

    Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 355bda552316d6ae9fc87e25a915e5fcf90167d3
Author: Malcolm Priestley <tvboxspy@gmail.com>
Date:   Sun Nov 11 15:45:52 2012 +0000

    staging: vt6656: 64 bit fixes: fix long warning messages.

    commit b4dc03af5513774277c9c36b12a25cd3f25f4404 upstream.

    Fixes long warning messages from patch
    [PATCH 08/14] staging: vt6656: 64 bit fixes : correct all type sizes

    Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f25b87741e96bfdd732cb7680fe0b251877ea362
Author: Malcolm Priestley <tvboxspy@gmail.com>
Date:   Sun Nov 11 15:41:25 2012 +0000

    staging: vt6656: 64 bit fixes : correct all type sizes

    commit 7730492855a2f9c828599bcd8d62760f96d319e4 upstream.

    After this patch all BYTE/WORD/DWORD types can be replaced with the appropriate u sizes.

    Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4f668e4c2635b8a33feed913ccbe7a8a1b5ead05
Author: Malcolm Priestley <tvboxspy@gmail.com>
Date:   Sun Nov 11 15:32:05 2012 +0000

    staging: vt6656: 64 bit fixes: use u32 for QWORD definition.

    commit a552397d5e4ef0cc0bd3e9595d6acc9a3b381171 upstream.

    Size of long issues replace with u32.

    Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a32f2fed9432a39357bfcf392849f0e233639727
Author: Malcolm Priestley <tvboxspy@gmail.com>
Date:   Sun Oct 7 08:27:00 2012 +0100

    staging: vt6656: [BUG] out of bound array reference in RFbSetPower.

    commit ab1dd9963137a1e122004d5378a581bf16ae9bc8 upstream.

    Calling RFbSetPower with uCH zero value will cause out of bound array reference.

    This causes 64 bit kernels to oops on boot.

    Note: Driver does not function on 64 bit kernels and should be
    blacklisted on them.

    Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1cf819361e77cff23d4385775a6f120cabe29839
Author: Alasdair G Kergon <agk@redhat.com>
Date:   Fri Dec 21 20:23:30 2012 +0000

    dm ioctl: prevent unsafe change to dm_ioctl data_size

    commit e910d7ebecd1aac43125944a8641b6cb1a0dfabe upstream.

    Abort dm ioctld: Only unregister platform devices allocated by the mfd core

    commit b9fbb62eb61452d728c39b2e5020739c575aac53 upstream.

    mfd_remove_devices would iterate over all devices sharing a parent with
    an mfd device regardless of whether they were allocated by the mfd core
    or not. This especially caused problems when the device structure was
    not contained within a platform_device, because to_platform_device is
    used on each device pointer.

    This patch defines a device_type for mfd devices and checks this is
    present from mfd_remove_devices_fn before processing the device.

    Signed-off-by: Charles Keepax <ckeepax@opensource.wolfsonmicro.com>
    Tested-by: Peter Tyser <ptyser@xes-inc.com>
    Reviewed-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
    Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 52ae560ee055f41b4631db337c509040cf1d5109
Author: Yi Zou <yi.zou@intel.com>
Date:   Mon Dec 10 17:04:00 2012 -0800

    target/tcm_fc: fix the lockdep warning due to inconsistent lock state

    commit 9f4ad44b264f8bb61ffdd607148215566568430d upstream.

    The lockdep warning below is in theory correct but it will be in really weird
    rare situation that ends up that deadlock since the tcm fc session is hashed
    based the rport id. Nonetheless, the complaining below is about rcu callback
    that does the transport_deregister_session() is happening in softirq, where
    transport_register_session() that happens earlier is not. This triggers the
    lockdep warning below. So, just fix this to make lockdep happy by disabling
    the soft irq before calling transport_register_session() in ft_prli.

    BTW, this was found in FCoE VN2VN over two VMs, couple of create and destroy
    would get this triggered.

    v1: was enforcing register to be in softirq context which was not righ. See,
    http://www.spinics.net/lists/target-devel/msg03614.html

    v2: following comments from Roland&Nick (thanks), it seems we don't have to
    do transport_deregister_session() in rcu callback, so move it into ft_sess_free()
    but still do kfree() of the corresponding ft_sess struct in rcu callback to
    make sure the ft_sess is not freed till the rcu callback.

    ...
    [ 1328.370592] scsi2 : FCoE Driver
    [ 1328.383429] fcoe: No FDMI support.
    [ 1328.384509] host2: libfc: Link up on port (000000)
    [ 1328.934229] host2: Assigned Port ID 00a292
    [ 1357.232132] host2: rport 00a393: Remove port
    [ 1357.232568] host2: rport 00a393: Port sending LOGO from Ready state
    [ 1357.233692] host2: rport 00a393: Delete port
    [ 1357.234472] host2: rport 00a393: work event 3
    [ 1357.234969] host2: rport 00a393: callback ev 3
    [ 1357.235979] host2: rport 00a393: Received a LOGO response closed
    [ 1357.236706] host2: rport 00a393: work delete
    [ 1357.237481]
    [ 1357.237631] =================================
    [ 1357.238064] [ INFO: inconsistent lock state ]
    [ 1357.238450] 3.7.0-rc7-yikvm+ #3 Tainted: G           O
    [ 1357.238450] ---------------------------------
    [ 1357.238450] inconsistent {SOFTIRQ-ON-W} -> {IN-SOFTIRQ-W} usage.
    [ 1357.238450] ksoftirqd/0/3 [HC0[0]:SC1[1]:HE0:SE0] takes:
    [ 1357.238450]  (&(&se_tpg->session_lock)->rlock){+.?...}, at: [<ffffffffa01eacd4>] transport_deregister_session+0x41/0x148 [target_core_mod]
    [ 1357.238450] {SOFTIRQ-ON-W} state was registered at:
    [ 1357.238450]   [<ffffffff810834f5>] mark_held_locks+0x6d/0x95
    [ 1357.238450]   [<ffffffff8108364a>] trace_hardirqs_on_caller+0x12d/0x197
    [ 1357.238450]   [<ffffffff810836c1>] trace_hardirqs_on+0xd/0xf
    [ 1357.238450]   [<ffffffff8149caba>] _raw_spin_unlock_irq+0x2d/0x45
    [ 1357.238450]   [<ffffffffa01e8d10>] __transport_register_session+0xb8/0x122 [target_core_mod]
    [ 1357.238450]   [<ffffffffa01e8dbe>] transport_register_session+0x44/0x5a [target_core_mod]
    [ 1357.238450]   [<ffffffffa018e32c>] ft_prli+0x1e3/0x275 [tcm_fc]
    [ 1357.238450] 57.238450]   [<ffffffffa015be88>] fc_lport_recv_els_req+0xc4/0xd5 [libfc]
    [ 1357.238450]   [<ffffffffa015c778>] fc_lport_recv_req+0x12f/0x18f [libfc]
    [ 1357.238450]   [<ffffffffa015a6d7>] fc_exch_recv+0x8ba/0x981 [libfc]
    [ 1357.238450]   [<ffffffffa0176d7a>] fcoe_percpu_receive_thread+0x47a/0x4e2 [fcoe]
    [ 1357.238450]   [<ffffffff810549f1>] kthread+0xb1/0xb9
    [ 1357.238450]   [<ffffffff814a40ec>] ret_from_fork+0x7c/0xb0
    [ 1357.238450] irq event stamp: 275411
    [ 1357.238450] hardirqs last  enabled at (275410): [<ffffffff810bb6a0>] rcu_process_callbacks+0x229/0x42a
    [ 1357.238450] hardirqs last disabled at (275411): [<ffffffff8149c2f7>] _raw_spin_lock_irqsave+0x22/0x8e
    [ 1357.238450] softirqs last  enabled at (275394): [<ffffffff8103d669>] __do_softirq+0x246/0x26f
    [ 1357.238450] softirqs last disabled at (275399): [<ffffffff8103d6bb>] run_ksoftirqd+0x29/0x62
    [ 1357.238450]
    [ 1357.238450] other info that might help us debug this:
    [ 1357.238450]  Possible unsafe locking scenario:
    [ 1357.238450]
    [ 1357.238450]        CPU0
    [ 1357.238450]        ----
    [ 1357.238450]   lock(&(&se_tpg->session_lock)->rlock);
    [ 1357.238450]   <Interrupt>
    [ 1357.238450]     lock(&(&se_tpg->session_lock)->rlock);
    [ 1357.238450]
    [ 1357.238450]  *** DEADLOCK ***
    [ 1357.238450]
    [ 1357.238450] no locks held by ksoftirqd/0/3.
    [ 1357.238450]
    [ 1357.238450] stack backtrace:
    [ 1357.238450] Pid: 3, comm: ksoftirqd/0 Tainted: G           O 3.7.0-rc7-yikvm+ #3
    [ 1357.238450] Call Trace:
    [ 1357.238450]  [<ffffffff8149399a>] print_usage_bug+0x1f5/0x206
    [ 1357.238450]  [<ffffffff8100da59>] ? save_stack_trace+0x2c/0x49
    [ 1357.238450]  [<ffffffff81082aae>] ? print_irq_inversion_bug.part.14+0x1ae/0x1ae
    [ 1357.238450]  [<ffffffff81083336>] mark_lock+0x106/0x258
    [ 1357.238450]  [<ffffffff81084e34>] __lock_acquire+0x2e7/0xe53
    [ 1357.238450]  [<ffffffff8102903d>] ? pvclock_clocksource_read+0x48/0xb4
    [ 1357.238450]  [<ffffffff810ba6a3>] ? rcu_process_gp_end+0xc0/0xc9
    [ 1357.238450]  [<ffffffffa01eacd4>] ? transport_deregister_session+0x41/0x148 [target_core_mod]
    [ 1357.238450]  [<ffffffff81085ef1>] lock_acquire+0x119/0x143
    [ 1357.238450]  [<ffffffffa01eacd4>] ? transport_deregister_session+0x41/0x148 [target_core_mod]
    [ 1357.238450]  [<ffffffff8149c329>] _raw_spin_lock_irqsave+0x54/0x8e
    [ 1357.238450]  [<ffffffffa01eacd4>] ? transport_deregister_session+0x41/0x148 [target_core_mod]
    [ 1357.238450]  [<ffffffffa01eacd4>] transport_deregister_session+0x41/0x148 [target_core_mod]
    [ 1357.238450]  [<ffffffff810bb6a0>] ? rcu_process_callbacks+0x229/0x42a
    [ 1357.238450]  [<ffffffffa018ddc5>] ft_sess_rcu_free+0x17/0x24 [tcm_fc]
    [ 1357.238450]  [<ffffffffa018ddae>] ? ft_sess_free+0x1b/0x1b [tcm_fc]
    [ 1357.238450]  [<ffffffff810bb6d7>] rcu_process_callbacks+0x260/0x42a
    [ 1357.238450]  [<ffffffff8103d55d>] __do_softirq+0x13a/0x26f
    [ 1357.238450]  [<ffffffff8149b34e>] ? __schedule+0x65f/0x68e
    [ 1357.238450]  [<ffffffff8103d6bb>] run_ksoftirqd+0x29/0x62
    [ 1357.238450]  [<ffffffff8105c83c>] smpboot_thread_fn+0x1a5/0x1aa
    [ 1357.238450]  [<ffffffff8105c697>] ? smpboot_unregister_percpu_thread+0x47/0x47
    [ 1357.238450]  [<ffffffff810549f1>] kthread+0xb1/0xb9
    [ 1357.238450]  [<ffffffff8149b49d>] ? wait_for_common+0xbb/0x10a
    [ 1357.238450]  [<ffffffff81054940>] ? __init_kthread_worker+0x59/0x59
    [ 1357.238450]  [<ffffffff814a40ec>] ret_from_fork+0x7c/0xb0
    [ 1357.238450]  [<ffffffff81054940>] ? __init_kthread_worker+0x59/0x59
    [ 1417.440099]  rport-2:0-0: blocked FC remote port time out: removing rport

    Signed-off-by: Yi Zou <yi.zou@intel.com>
    Cc: Open-FCoE <devel@open-fcoe.org>
    Cc: Nicholas A. Bellinger <nab@risingtidesystems.com>
    Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 454a7d59865e05a44757cff30608066ccf1d4655
Author: Xiaotian Feng <xtfeng@gmail.com>
Date:   Thu Dec 13 16:1 oops were observed when disk error happened:

    [ 4272.896937] sd 0:0:0:0: [sda] Unhandled error code
    [ 4272.896939] sd 0:0:0:0: [sda] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK
    [ 4272.896942] sd 0:0:0:0: [sda] CDB: Read(10): 28 00 00 5a de a7 00 00 08 00
    [ 4272.896951] end_request: I/O error, dev sda, sector 5955239
    [ 4291.574947] BUG: unable to handle kernel NULL pointer dereference at (null)
    [ 4291.658305] IP: [] ahci_activity_show+0x1/0x40
    [ 4291.730090] PGD 76dbbc067 PUD 6c4fba067 PMD 0
    [ 4291.783408] Oops: 0000 [#1] SMP
    [ 4291.822100] last sysfs file: /sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/sw_activity
    [ 4291.934235] CPU 9
    [ 4291.958301] Pid: 27942, comm: hwinfo ......

    ata_scsi_find_dev could return NULL, so ata_scsi_activity_{show,store} should check if atadev is NULL.

    Signed-off-by: Xiaotian Feng <dannyfeng@tencent.com>
    Cc: James Bottomley <JBottomley@Parallels.com>
    Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9b49bdf3376f3c6e9b38ccfd509db19d006c5d2b
Author: Aaron Lu <aaron.lu@intel.com>
Date:   Mon Dec 3 11:35:02 2012 +0800

    libata: set dma_mode to 0xff in reset

    commit 5416912af75de9cba5d1c75b99a7888b0bbbd2fb upstream.

    ata_device->dma_mode's initial value is zero, which is not a valid dma
    mode, but ata_dma_enabled will return true for this value. This patch
    sets dma_mode to 0xff in reset function, so that ata_dma_enabled will
    not return true for this case, or it will cause problem for pata_acpi.

    The corrsponding bugzilla page is at:
    https://bugzilla.kernel.org/show_bug.cgi?id=49151

    Reported-by: Phillip Wood <phillip.wood@dunelm.org.uk>
    Signed-off-by: Aaron Lu <aaron.lu@intel.com>
    Tested-by: Szymon Janc <szymon@janc.net.pl>
    Tested-by: Dutra Julio <dutra.julio@gmail.com>
    Acked-by: Alan Cox <alan@linux.intel.com>
    Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1bf35799a1d4fa0db11cdfa0da020fabde140982
Author: Mikael Pettersson <mikpe@it.uu.se>
Date:   Sun Sep 16 20:53:43 2012 +0200

    sata_promise: fix hardreset lockdep error

    commit 3100d49d3cd236443faae9d81137c81b22d36003 upstream.

    sata_promise's pdc_hard_reset_port() needs to serialize because it
    flips a port-specific bit in controller register that's shared by
    all ports. The code takes the ata host lock for this, but that's
    broken because an interrupt may arrive on our irq during the hard
    reset sequence, and that too will take the ata host lock. With
    lockdep enabled a big nasty warning is seen.

    Fixed by adding private state to the ata host structure, containing
    a second lock used only for serializing the hard reset sequences.
    This eliminated the lockdep warnings both on my test rig and on
    the original reporter's machine.

    Signed-off-by: Mikael Pettersson <mikpe@it.uu.se>
    Tested-by: Adko Branil <adkobranil@yahoo.com>
    Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 78c9672f78f8bdf6321f6bead28c7dbd251ddd24
Author: David Jeffery <djeffery@redhat.com>
Date:   Wed Nov 21 02:39:54 2012 -0500

    SCSI: qla2xxx: Test and clear FCPORT_UPDATE_NEEDED atomically.

    commit a394aac88506159e047630fc90dc2242568382d8 upstream.

    When the qla2xxx driver loses access to multiple, remote ports, there is a race
    condition which can occur which will keep the request stuck on a scsi request
    queue indefinitely.

    This bad state occurred do to a race condition with how the FCPORT_UPDATE_NEEDED
    bit is set in qla2x00_schedule_rport_del(), and how it is cleared in
    qla2x00_do_dpc().  The problem port has its drport pointer set, but it has never
    been processed by the driver to inform the fc transport that the port has been
    lost.  qla2x00_schedule_rport_del() sets drport, do_dpc(), the port lists are walked and
    any drport pointer is handled and the fc transport informed of the port loss,
    then the FCPORT_UPDATE_NEEDED bit is cleared.  This leaves a race where the
    dpc thread is processing one port removal, another port removal is marked
    with a call to qla2x00_schedule_rport_del(), and the dpc thread clears the
    bit for both removals, even though only the first removal was actually
    handled.  Until another event occurs to set FCPORT_UPDATE_NEEDED, the later
    port removal is never finished and qla2xxx stays in a bad state which causes
    requests to become stuck on request queues.

    This patch updates the driver to test and clear FCPORT_UPDATE_NEEDED
    atomically.  This ensures the port state changes are processed and not lost.

    Signed-off-by: David Jeffery <djeffery@redhat.com>
    Signed-off-by: Chad Dupuis <chad.dupuis@qlogic.com>
    Signed-off-by: Saurav Kashyap <saurav.kashyap@qlogic.com>
    Signed-off-by: James Bottomley <JBottomley@Parallels.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b9ebaf5aad54cb173db311f007057976d867cdd3
Author: Xi Wang <xi.wang@gmail.com>
Date:   Fri Nov 16 14:40:03 2012 -0500

    SCSI: mvsas: fix undefined bit shift

    commit beecadea1b8d67f591b13f7099559f32f3fd601d upstream.

    The macro bit(n) is defined as ((u32)1 << n), and thus it doesn't work
    with n >= 32, such as in mvs_94xx_assign_reg_set():

    	if (i >= 32) {
    		mvi->sata_reg_set |= bit(i);
    		...
    	}

    The shift ((u32)1 << n) with n >= 32 also leads to undefined behavior.
    The result varies depending on the architecture.

    This patch changes bit(n) to do a 64-bit shift.  It also simplifies
    mv_ffc64() using __ffs64(), since invoking ffz() with ~0 is undefined.

    Signed-off-by: Xi Wang <xi.wang@gmail.com>
    Acked-by: Xiangliang Yu <yuxiangl@marvell.com>
    Signed-off-by: James Bottomley <JBottomley@Parallels.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f8ef1b36636fadc891a039baef46414e635a2a72
Author: Stephan Gatzka <stephan.gatzka@gmail.com>
Date:   Wed Nov 28 20:04:32 2012 +0100

    firewire: net: Fix handling of fragmented multicast/broadcast packets.

    commit 9d2373420900a39f5212a3b289331aa3535b1000 upstream.

    This patch fixes both the transmit and receive portion of sending
    fragmented mutlicast and broadcast packets.

    The transmit section was broken because the offset for INTFRAG and
    LASTFRAG packets were just miscalculated by IEEE1394_GASP_HDR_SIZE (which
    was reserved with skb_push() in fwnet_send_packet).

    The receive section was broken because in fwnet_incoming_packet is a call
    to fwnet_peer_find_by_node_id(). Called with generation == -1 it will
    not find a peer and the partial datagrams are associated to a peer.

    [Stefan R:  The fix to use context->card->generation is not perfect.
    It relies on the IR tasklet which processes packets from the prior bus
    generation to run before the self-ID-complete worklet which sets the
    current card generation.  Alas, there is no simple way of a race-free
    implementation.  Let's do it this way for now.]

    Signed-off-by: Stephan Gatzka <stephan.gatzka@gmail.com>
    Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 46bea30a01949caf8143be4a88038cbe1003b10e
Author: Gabor Juhos <juhosg@openwrt.org>
Date:   Sun Dec 9 23:57:09 2012 +0100

    ath9k: ar9003: fix OTP register offsets for AR9340

    commit b3cd8021379306c0be6932e4d3b4b01efc681769 upstream.

    Trying to access the OTP memory on the AR9340
    causes a data bus error like this:

      Data bus error, epc == 86e84164, ra == 86e84164
      Oops[#1]:
      Cpu 0
      $ 0   : 00000000 00000061 deadc0de 00000000
      $ 4   : b8115f18 00015f18 00000007 00000004
      $ 8   : 00000001 7c7c3c7c 7c7c7c7c 7c7c7c7c
      $12   : 7c7c3c7c 001f0041 00000000 7c7c7c3c
  00000004 00000064 00000004 86d71c44
      $24   : 00000000 86e6ca00
      $28   : 86d70000 86d71b20 86ece0c0 86e84164
      Hi    : 00000000
      Lo    : 00000064
      epc   : 86e84164 ath9k_hw_wait+0x58/0xb0 [ath9k_hw]
          Tainted: G           O
      ra    : 86e84164 ath9k_hw_wait+0x58/0xb0 [ath9k_hw]
      Status: 1100d403    KERNEL EXL IE
      Cause : 4080801c
      PrId  : 0001974c (MIPS 74Kc)
      Modules linked in: ath9k(O+) ath9k_common(O) ath9k_hw(O) ath(O) ar934x_nfc
      mac80211(O) usbcore usb_common scsi_mod nls_base nand nand_ecc nand_ids
      crc_ccitt cfg80211(O) compat(O) arc4 aes_generic crypto_blkcipher cryptomgr
      aead crypto_hash crypto_algapi ledtrig_timer ledtrig_default_on leds_gpio
      Process insmod (pid: 459, threadinfo=86d70000, task=87942140, tls=779ac440)
      Stack : 802fb500 000200da 804db150 804e0000 87816130 86ee0000 00010000 86d71b88
              86d71bc0 00000004 00000003 86e9fcd0 80305300 0002c0d0 86e74c50 800b4c20
              000003e8 00000001 00000000 86ee0000 000003ff 86e9fd64 80305300 80123938
              fffffffc 00000004 000058bc 00000000 86ea0000 86ee0000 000001ff 878d6000
              99999999 86e9fdc0 86ee0fcc 86e9e664 0000c0d0 86ee0000 0000700000007000
              ...
      Call Trace:
      [<86e84164>] ath9k_hw_wait+0x58/0xb0 [ath9k_hw]
      [<86e9fcd0>] ath9k_hw_setup_statusring+0x16b8/0x1c7c [ath9k_hw]

      Code: 0000a812  0040f809  00000000 <00531024> 1054000b  24020001  0c05b5dc  2404000a  26520001

    The cause of the error is that the OTP register
    offsets are different on the AR9340 than the
    actually used values.

    Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
    Signed-off-by: John W. Linville <linville@tuxdriver.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ae172f61ff5d599fe56d2eec814e8310fda7cd43
Author: Felix Fietkau <nbd@openwrt.org>
Date:   Thu Dec 6 18:40:11 2012 +0100

    Revert "ath9k_hw: Update AR9003 high_power tx gain table"

    commit 9c170e068636deb3e3f96114034bb711675f0faa upstream.

    This reverts commit f74b9d365ddd33a375802b064f96a5d0e99af7c0.

    Turns out reverting commit a240dc7b3c7463bd60cf0a9b2a90f52f78aae0fd
    "ath9k_hw: Updated AR9003 tx gain table for 5GHz" was not enough to
    bring the tx power back to normal levels on devices like the
    Buffalo WZR-HP-G450H, this one needs to be reverted as well.

    This revert improves tx power by ~10 db on that device

    Signed-off-by: Felix Fietkau <nbd@openwrt.org>
    Cc: rmanohar@qca.qualcomm.com
    Signed-off-by: John W. Linville <linville@tuxdriver.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit da0e14f01594bc013022bf057bcd714566a7b99e
Author: Laura Abbott <lauraa@codeaurora.org>
Date:   Fri Jan 11 14:31:51 2013 -0800

    mm: use aligned zone start for pfn_to_bitidx calculation

    commit c060f943d0929f3e429c5d9522290584f6281d6e upstream.

    The current calculation in pfn_to_bitidx assumes that (pfn -
    zone->zone_start_pfn) >> pageblock_order will return the same bit for
    all pfn in a pageblock.  If zone_start_pfn is not aligned to
    pageblock_nr_pages, this may not always be correct.

    Consider the following with pageblock order = 10, zone start 2MB:

      pfn     | pfn - zone start | (pfn - zone start) >> page block order
      ----------------------------------------------------------------
      0x26000 | 0x25e00	   |  0x97
      0x26100 | 0x25f00	   |  0x97
      0x26200 | 0x26000	   |  0x98
      0x26300 | 0x26100	   |  0x98

    This means that calling {get,set}_pageblock_migratetype on a single page
    will not set the migratetype for the full block.  Fix this by rounding
    down zone_start_pfn when doing the bitidx calculation.

    For our use case, the effects of this bug were mostly tied to the fact
    that CMA allocations would either take a long time or fail to happen.
    Depending on the driver using CMA, this could result in anything from
    visual glitches to application failures.
cked-by: Mel Gorman <mgorman@suse.de>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 63c54425c02a07bfa162189f2839a3f204a37b5b
Author: Jason Liu <r64343@freescale.com>
Date:   Fri Jan 11 14:31:47 2013 -0800

    mm: compaction: fix echo 1 > compact_memory return error issue

    commit 7964c06d66c76507d8b6b662bffea770c29ef0ce upstream.

    when run the folloing command under shell, it will return error

      sh/$ echo 1 > /proc/sys/vm/compact_memory
      sh/$ sh: write error: Bad address

    After strace, I found the following log:

      ...
      write(1, "1\n", 2)               = 3
      write(1, "", 4294967295)         = -1 EFAULT (Bad address)
      write(2, "echo: write error: Bad address\n", 31echo: write error: Bad address
      ) = 31

    This tells system return 3(COMPACT_COMPLETE) after write data to
    compact_memory.

    The fix is to make the system just return 0 instead 3(COMPACT_COMPLETE)
    from sysctl_compaction_handler after compaction_nodes finished.

    Signed-off-by: Jason Liu <r64343@freescale.com>
    Suggested-by: David Rientjes <rientjes@google.com>
    Acked-by: Mel Gorman <mgorman@suse.de>
    Cc: Rik van Riel <riel@redhat.com>
    Cc: Minchan Kim <minchan@kernel.org>
    Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
    Acked-by: David Rientjes <rientjes@google.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2c77bb37171f8d07402f13a94390c8a20c985f50
Author: Sebastian Ott <sebott@linux.vnet.ibm.com>
Date:   Fri Nov 30 16:48:59 2012 +0100

    s390/cio: fix pgid reserved check

    commit d99e79ec5574fc556c988f613ed6175f6de66f4a upstream.

    The check to whom a device is reserved is done by checking the path
    state of the affected channel paths. If it turns out that one path is
    flagged as reserved by someone else the whole device is marked as such.

    However the meaning of the RESVD_ELSE bit is that the addressed device
    is reserved to a different pathgroup (and not reserved to a different
    LPAR). If we do this test on a path which is currently not a member of
    the pathgroup we could erroneously mark the device as reserved to
    someone else.

    To fix this collect the reserved state for all potential members of the
    pathgroup and only mark the device as reserved if all of those potential
    members have the RESVD_ELSE bit set.

    Acked-by: Peter Oberparleiter <peter.oberparleiter@de.ibm.com>
    Signed-off-by: Sebastian Ott <sebott@linux.vnet.ibm.com>
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit aea63e0027f3eb9ff17fd0b6a4a528d91e9e820f
Author: Shan Hai <shan.hai@windriver.com>
Date:   Thu Nov 8 15:57:49 2012 +0000

    powerpc/vdso: Remove redundant locking in update_vsyscall_tz()

    commit ce73ec6db47af84d1466402781ae0872a9e7873c upstream.

    The locking in update_vsyscall_tz() is not only unnecessary because the vdso
    code copies the data unproteced in __kernel_gettimeofday() but also
    introduces a hard to reproduce race condition between update_vsyscall()
    and update_vsyscall_tz(), which causes user space process to loop
    forever in vdso code.

    The following patch removes the locking from update_vsyscall_tz().

    Locking is not only unnecessary because the vdso code copies the data
    unprotected in __kernel_gettimeofday() but also erroneous because updating
    the tb_update_count is not atomic and introduces a hard to reproduce race
    condition between update_vsyscall() and update_vsyscall_tz(), which further
    causes user space process to loop forever in vdso code.

    The below scenario describes the race condition,
    x==0	Boot CPU			other CP					x++;sync
    x==3		    sync;x++
    						sync;x++
    	proc_P: x==3 (loops until x becomes even)

    Because the ++ operator would be implemented as three instructions and not
    atomic on powerpc.

    A similar change was made for x86 in commit 6c260d58634
    ("x86: vdso: Remove bogus locking in update_vsyscall_tz")

    Signed-off-by: Shan Hai <shan.hai@windriver.com>
    Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit dc22f2dc55c1b395db33a2695f5f356726800c6a
Author: Anton Blanchard <anton@samba.org>
Date:   Sun Nov 11 19:01:05 2012 +0000

    powerpc: Fix CONFIG_RELOCATABLE=y CONFIG_CRASH_DUMP=n build

    commit 11ee7e99f35ecb15f59b21da6a82d96d2cd3fcc8 upstream.

    If we build a kernel with CONFIG_RELOCATABLE=y CONFIG_CRASH_DUMP=n,
    the kernel fails when we run at a non zero offset. It turns out
    we were incorrectly wrapping some of the relocatable kernel code
    with CONFIG_CRASH_DUMP.

    Signed-off-by: Anton Blanchard <anton@samba.org>
    Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Conflicts:

	drivers/gpu/drm/i915/intel_lvds.c
msm: cpufreq: Implement suspend/resume for cpufreq driver

Cpufreq suspend variable get's updated in kernel pm notifier
callback which gets called in process context. This will create
window where cpufreq governor may try to change the frequency
before suspend variable is updated while resume.

Define suspend/resume for cpufreq driver to update suspend variable
in atomic context.

Don't update the policy->cur upon cpufreq driver failure.

CRs-fixed: 423791
Change-Id: Id78705f5c3b8bf801c6253e9362299280903769f
Signed-off-by: Anji Jonnala <anjir@codeaurora.org>
switch do_fsync() to fget_light()

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
fs/dyn_sync_cntrl: dynamic sync control

The dynamic sync control interface uses Android kernel's unique early
suspend / lat resume interface.

While screen is on, file sync is disabled
when screen is off, a file sync is called to flush all outstanding writes
and restore file sync operation as normal.

Signed-off-by: Paul Reioux <reioux@gmail.com>
sync: fix too many arguments for file->f_op->fsync
Revert "switch do_fsync() to fget_light()"

This reverts commit 43e1a6b1d6ebdc1686d60913df07412e3cb4b141.
Bluetooth: Resolved a race condition

Due to simultaneous disconnects from HCI and SCO
this race condtion arrives. While doing SCO disconnect
a null pointer check for HCI connection should be present
to avoid any crash due to this condtion.

CRs-Fixed: 415887
Change-Id: I23f0a7a256e267650db0abc2fc510b964b64c50c
Signed-off-by: Nitin Srivastava <nitinsr@codeaurora.org>
Bluetooth: Avoid a case where sleep is getting called in soft irq context

While turning off BT, sleep is getting called in the soft isr context
from work queue which is queued from a code section guarded under the
bh lock,
To resolve this released the bh lock before queing the work, as it wont
impact any BT functionality.

CRs-fixed: 405917
Change-Id: I1b872d724b4d0d384cc5314e0f493facd9829a54
Signed-off-by: Bhasker Neti <bneti@codeaurora.org>
Revert "spade: use EBI0 instead of EBI1".
Revert "msm: spade: fix memory type of pmem_adsp.".
Revert "[USB] Fast AC charging for Unknown device type".