Linux 3.0.79

commit ae101a35196a14a8388b7db5f7ddd0b3cfdc5f99
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Sun May 19 10:05:47 2013 -0700

    Linux 3.0.79

commit 49432a001824f973ccf8214c7ef9e8e72c974987
Author: Oleg Nesterov <oleg@redhat.com>
Date:   Thu May 16 17:43:55 2013 +0200

    usermodehelper: check subprocess_info->path != NULL

    commit 264b83c07a84223f0efd0d1db9ccc66d6f88288f upstream.

    argv_split(empty_or_all_spaces) happily succeeds, it simply returns
    argc == 0 and argv[0] == NULL. Change call_usermodehelper_exec() to
    check sub_info->path != NULL to avoid the crash.

    This is the minimal fix, todo:

     - perhaps we should change argv_split() to return NULL or change the
       callers.

     - kill or justify ->path[0] check

     - narrow the scope of helper_lock()

    Signed-off-by: Oleg Nesterov <oleg@redhat.com>
    Acked-By: Lucas De Marchi <lucas.demarchi@intel.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ac087d8e21d7722266d913d766b5c8b87772cbb4
Author: Kees Cook <keescook@chromium.org>
Date:   Sun May 12 22:00:51 2013 -0700

    drm/radeon: check incoming cliprects pointer

    commit fefaedcfb82d2e57c2320acf60604ab03b750cc0 upstream.

    The "boxes" parameter points into userspace memory. It should be verified
    like any other operation against user memory.

    Signed-off-by: Kees Cook <keescook@chromium.org>
    Signed-off-by: Dave Airlie <airlied@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 486684458640fe1e74937b2e0eef41444515caf0
Author: Benjamin LaHaise <bcrl@kvack.org>
Date:   Thu May 16 14:04:27 2013 -0500

    ipmi: ipmi_devintf: compat_ioctl method fails to take ipmi_mutex

    commit 6368087e851e697679af059b4247aca33a69cef3 upstream.

    When a 32 bit version of ipmitool is used on a 64 bit kernel, the
    ipmi_devintf code fails to correctly acquire ipmi_mutex.  This results in
    incomplete data being retrieved in some cases, or other possible failures.
    Add a wrapper around compat_ipmi_ioctl() to take ipmi_mutex to fix this.

    Signed-off-by: Benjamin LaHaise <bcrl@kvack.org>
    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 c9e43f309c0a5ecb9467ea826c238fc0febb1e30
Author: Chen Gang <gang.chen@asianux.com>
Date:   Thu May 16 14:04:25 2013 -0500

    drivers/char/ipmi: memcpy, need additional 2 bytes to avoid memory overflow

    commit a5f2b3d6a738e7d4180012fe7b541172f8c8dcea upstream.

    When calling memcpy, read_data and write_data need additional 2 bytes.

      write_data:
        for checking:  "if (size > IPMI_MAX_MSG_LENGTH)"
        for operating: "memcpy(bt->write_data + 3, data + 1, size - 1)"

      read_data:
        for checking:  "if (msg_len < 3 || msg_len > IPMI_MAX_MSG_LENGTH)"
        for operating: "memcpy(data + 2, bt->read_data + 4, msg_len - 2)"

    Signed-off-by: Chen Gang <gang.chen@asianux.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 9e5124c57d380d616aef157c0f9e05ef0c80d1ca
Author: Lan Tianyu <tianyu.lan@intel.com>
Date:   Mon May 6 03:23:40 2013 +0000

    ACPI / EC: Restart transaction even when the IBF flag set

    commit 28fe5c825f8e15744d04c7c1b8df197950923ecd upstream.

    The EC driver works abnormally with IBF flag always set.
    IBF means "The host has written a byte of data to the command
    or data port, but the embedded controller has not yet read it".
    If IBF is set in the EC status and not cleared, this will cause
    all subsequent EC requests to fail with a timeout error.

    Change the EC driver so that it doesn't refuse to restart a
    transaction if IBF is set in the status.  Also increase the
    number of transaction restarts to 5, as it turns out that 2
    is not sufficient in some cases.

    This bug happens on several different machines (Asus V1S,
    Dell Latitude E6530, Samsung R719, Acer Aspire 5930G,
    Sony Vaio SR19VN and others).

    [rjw: Changelog]
    References: https://bugzilla.kernel.org/show_bug.cgi?id=14733
    References: https://bugzilla.kernel.org/show_bug.cgi?id=15560
    References: https://bugzilla.kernel.org/show_bug.cgi?id=15946
    References: https://bugzilla.kernel.org/show_bug.cgi?id=42945
    References: https://bugzilla.kernel.org/show_bug.cgi?id=48221
    Signed-off-by: Lan Tianyu <tianyu.lan@intel.com>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5cb2df345fb2b2e119f492d6c36e8d3bad70d8b3
Author: Wei Yongjun <yongjun_wei@trendmicro.com.cn>
Date:   Mon Apr 29 16:21:07 2013 -0700

    drivers/rtc/rtc-pcf2123.c: fix error return code in pcf2123_probe()

    commit 35623715818dfa720cccf99cd280dcbb4b78da23 upstream.

    Fix to return -ENODEV in the chip not found error handling
    case instead of 0, as done elsewhere in this function.

    Signed-off-by: Wei Yongjun <yongjun_wei@trendmicro.com.cn>
    Cc: Jingoo Han <jg1.han@samsung.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Jonghwan Choi <jhbird.choi@samsung.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d8b1123f949c5463421ec0a66bbca21e0a5feba0
Author: Philipp Reisner <philipp.reisner@linbit.com>
Date:   Wed Mar 27 14:08:47 2013 +0100

    drbd: fix for deadlock when using automatic split-brain-recovery

    commit 7c689e63a847316c1b2500f86891b0a574ce7e69 upstream.

    With an automatic after split-brain recovery policy of
    "after-sb-1pri call-pri-lost-after-sb",
    when trying to drbd_set_role() to R_SECONDARY,
    we run into a deadlock.

    This was first recognized and supposedly fixed by
    2009-06-10 "Fixed a deadlock when using automatic split brain recovery when both nodes are"
    replacing drbd_set_role() with drbd_change_state() in that code-path,
    but the first hunk of that patch forgets to remove the drbd_set_role().

    We apparently only ever tested the "two primaries" case.

    Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com>
    Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Jonghwan Choi <jhbird.choi@samsung.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e81164cfec2f578998670c8f00e5d0c33c06f20f
Author: Francois Romieu <romieu@fr.zoreil.com>
Date:   Fri May 10 00:50:20 2013 +0200

    r8169: fix vlan tag read ordering.

    commit ce11ff5e5963e441feb591e76278528f876c332d upstream.

    Control of receive descriptor must not be returned to ethernet chipset
    before vlan tag processing is done.

    VLAN tag receive word is now reset both in normal and error path.

    Signed-off-by: Francois Romieu <romieu@fr.zoreil.com>
    Spotted-by: Timo Teras <timo.teras@iki.fi>
    Cc: Hayes Wang <hayeswang@realtek.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b89396eaa22b921245b4d30f7e26e406e89aa51c
Author: Tomoya MORINAGA <tomoya.rohm@gmail.com>
Date:   Tue Feb 12 11:25:33 2013 +0900

    pch_dma: Use GFP_ATOMIC because called from interrupt context

    commit 5c1ef59168c485318e40ba485c1eba57d81d0faa upstream.

    pdc_desc_get() is called from pd_prep_slave_sg, and the function is
    called from interrupt context(e.g. Uart driver "pch_uart.c").
    In fact, I saw kernel error message.
    So, GFP_ATOMIC must be used not GFP_NOIO.

    Signed-off-by: Tomoya MORINAGA <tomoya.rohm@gmail.com>
    Signed-off-by: Vinod Koul <vinod.koul@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a7e22d0c0e81dde129a51ee413644124f4b59954
Author: Cong Wang <amwang@redhat.com>
Date:   Thu May 9 22:40:00 2013 +0000

    xfrm6: release dev before returning error

    [ Upstream commit 84c4a9dfbf430861e7588d95ae3ff61535dca351 ]

    We forget to call dev_put() on error path in xfrm6_fill_dst(),
    its caller doesn't handle this.

    Signed-off-by: Cong Wang <amwang@redhat.com>
    Cc: Herbert Xu <herbert@gondor.apana.org.au>
    Cc: Steffen Klassert <steffen.klassert@secunet.com>
    Cc: David S. Miller <davem@davemloft.net>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1e74f2ea952f201c5ee5edce74daab21aea89b31
Author: Eric Dumazet <edumazet@google.com>
Date:   Thu May 9 10:28:16 2013 +0000

    ipv6: do not clear pinet6 field

    [ Upstream commit f77d602124d865c38705df7fa25c03de9c284ad2 ]

    We have seen multiple NULL dereferences in __inet6_lookup_established()

    After analysis, I found that inet6_sk() could be NULL while the
    check for sk_family == AF_INET6 was true.

    Bug was added in linux-2.6.29 when RCU lookups were introduced in UDP
    and TCP stacks.

    Once an IPv6 socket, using SLAB_DESTROY_BY_RCU is inserted in a hash
    table, we no longer can clear pinet6 field.

    This patch extends logic used in commit fcbdf09d9652c891
    ("net: fix nulls list corruptions in sk_prot_alloc")

    TCP/UDP/UDPLite IPv6 protocols provide their own .clear_sk() method
    to make sure we do not clear pinet6 field.

    At socket clone phase, we do not really care, as cloning the parent (non
    NULL) pinet6 is not adding a fatal race.

    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d5bf240fa193989d605a715bda7cb3283b1abc89
Author: Jiri Pirko <jiri@resnulli.us>
Date:   Thu May 9 04:23:40 2013 +0000

    macvlan: fix passthru mode race between dev removal and rx path

    [ Upstream commit 233c7df0821c4190e2d3f4be0f2ca0ab40a5ed8c, note
      that I had to add list_first_or_null_rcu to rculist.h in order
      to accomodate this fix. ]

    Currently, if macvlan in passthru mode is created and data are rxed and
    you remove this device, following panic happens:

    NULL pointer dereference at 0000000000000198
    IP: [<ffffffffa0196058>] macvlan_handle_frame+0x153/0x1f7 [macvlan]

    I'm using following script to trigger this:
    <script>
    while [ 1 ]
    do
    	ip link add link e1 name macvtap0 type macvtap mode passthru
    	ip link set e1 up
    	ip link set macvtap0 up
    	IFINDEX=`ip link |grep macvtap0 | cut -f 1 -d ':'`
    	cat /dev/tap$IFINDEX  >/dev/null &
    	ip link del dev macvtap0
    done
    </script>

    I run this script while "ping -f" is running on another machine to send
    packets to e1 rx.

    Reason of the panic is that list_first_entry() is blindly called in
    macvlan_handle_frame() even if the list was empty. vlan is set to
    incorrect pointer which leads to the crash.

    I'm fixing this by protecting port->vlans list by rcu and by preventing
    from getting incorrect pointer in case the list is empty.

    Introduced by: commit eb06acdc85585f2 "macvlan: Introduce 'passthru' mode to takeover the underlying device"

    Signed-off-by: Jiri Pirko <jiri@resnulli.us>
    Acked-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1d81283ce68fb5f6841aeea620a133e5f9707e33
Author: Josh Boyer <jwboyer@redhat.com>
Date:   Wed May 8 09:45:47 2013 +0000

    if_cablemodem.h: Add parenthesis around ioctl macros

    [ Upstream commit 4f924b2aa4d3cb30f07e57d6b608838edcbc0d88 ]

    Protect the SIOCGCM* ioctl macros with parenthesis.

    Reported-by: Paul Wouters <pwouters@redhat.com>
    Signed-off-by: Josh Boyer <jwboyer@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cddd4b732be4dd206b99e25ac652db222d0ec2ba
Author: Sergei Shtylyov <sshtylyov@ru.mvista.com>
Date:   Thu May 9 11:14:07 2013 +0000

    3c59x: fix PCI resource management

    [ Upstream commit 4b264a1676e70dc656ba53a8cac690f2d4b65f4e ]

    The driver wrongly claimed I/O ports at an address returned by pci_iomap() --
    even if it was passed an MMIO address.  Fix this by claiming/releasing all PCI
    resources in the PCI driver's probe()/remove() methods instead and get rid of
    'must_free_region' flag weirdness (why would Cardbus claim anything for us?).

    Signed-off-by: Sergei Shtylyov <sshtylyov@ru.mvista.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 20a7e697adea9e58ce7ad390ba487b995ebcbb1b
Author: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
Date:   Thu May 2 11:10:22 2013 +0000

    3c59x: fix freeing nonexistent resource on driver unload

    [ Upstream commit c81400be716aa4c76f6ebf339ba94358dbbf6da6 ]

    When unloading the driver that drives an EISA board, a message similar to the
    following one is displayed:

    Trying to free nonexistent resource <0000000000013000-000000000001301f>

    Then an user is unable to reload the driver because the resource it requested in
    the previous load hasn't been freed. This happens most probably due to a typo in
    vortex_eisa_remove() which calls release_region() with 'dev->base_addr'  instead
    of 'edev->base_addr'...

    Reported-by: Matthew Whitehead <tedheadster@gmail.com>
    Tested-by: Matthew Whitehead <tedheadster@gmail.com>
    Signed-off-by: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 577b25f2aaa4b24fcff8457b240fd3442a1dd87b
Author: stephen hemminger <stephen@networkplumber.org>
Date:   Thu May 2 14:23:28 2013 +0000

    bridge: fix race with topology change timer

    [ Upstream commit 83401eb4990ff6af55aeed8f49681558544192e6 ]

    A bridge should only send topology change notice if it is not
    the root bridge. It is possible for message age timer to elect itself
    as a new root bridge, and still have a topology change timer running
    but waiting for bridge lock on other CPU.

    Solve the race by checking if we are root bridge before continuing.
    This was the root cause of the cases where br_send_tcn_bpdu would OOPS.

    Reported-by: JerryKang <jerry.kang@samsung.com>
    Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 368a315a157cda317a468c6d075e7e6ce6920410
Author: Jamal Hadi Salim <jhs@mojatatu.com>
Date:   Sun Apr 28 05:06:38 2013 +0000

    net_sched: act_ipt forward compat with xtables

    [ Upstream commit 0dcffd09641f3abb21ac5cabc61542ab289d1a3c ]

    Deal with changes in newer xtables while maintaining backward
    compatibility. Thanks to Jan Engelhardt for suggestions.

    Signed-off-by: Jamal Hadi Salim <jhs@mojatatu.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit be8fd5041900f0d8233ca61119477b28ca7df6e0
Author: Matthew Whitehead <tedheadster@gmail.com>
Date:   Mon Apr 29 17:46:53 2013 -0400

    3c509.c: call SET_NETDEV_DEV for all device types (ISA/ISAPnP/EISA)

    [ Upstream commit 3b54912f9cd167641b91d4a697bd742f70e534fe ]

    The venerable 3c509 driver only sets its device parent in one case, the ISAPnP one.
    It does this with the SET_NETDEV_DEV function. It should register with the device
    hierarchy in two additional cases: standard (non-PnP) ISA and EISA.

    - Currently they appear here:
    /sys/devices/virtual/net/eth0 (standard ISA)
    /sys/devices/virtual/net/eth1 (EISA)

    - Rather, they should instead be here:
    /sys/devices/isa/3c509.0/net/eth0 (standard ISA)
    /sys/devices/pci0000:00/0000:00:07.0/00:04/net/eth1 (EISA)

    Tested on ISA and EISA boards.

    Signed-off-by: Matthew Whitehead <tedheadster@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a0464b18acc3f17ff86aa25df34c5066a21c8291
Author: Eric Dumazet <edumazet@google.com>
Date:   Wed Apr 24 18:34:55 2013 -0700

    tcp: force a dst refcount when prequeue packet

    [ Upstream commit 093162553c33e9479283e107b4431378271c735d ]

    Before escaping RCU protected section and adding packet into
    prequeue, make sure the dst is refcounted.

    Reported-by: Mike Galbraith <bitbucket@online.de>
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 875cfc6271a37f35f6334c26184b16eb70625929
Author: Daniel Vetter <daniel.vetter@ffwll.ch>
Date:   Sat Apr 20 12:08:11 2013 +0200

    drm/mm: fix dump table BUG

    commit 3a359f0b21ab218c1bf7a6a1b638b6fd143d0b99 upstream.

    In

    commit 9e8944ab564f2e3dde90a518cd32048c58918608
    Author: Chris Wilson <chris@chris-wilson.co.uk>
    Date:   Thu Nov 15 11:32:17 2012 +0000

        drm: Introduce an iterator over holes in the drm_mm range manager

    helpers and iterators for hole handling have been introduced with some
    debug BUG_ONs sprinkled over. Unfortunately this broke the mm dumper
    which unconditionally tried to compute the size of the very first
    hole.

    While at it unify the code a bit with the hole dumping in the loop.

    v2: Extract a hole dump helper.

    Reported-by: Christopher Harvey <charvey@matrox.com>
    Cc: Christopher Harvey <charvey@matrox.com>
    Cc: Dave Airlie <airlied@redhat.com>
    Cc: Chris Wilson <chris@chris-wilson.co.uk>
    Acked-by: Dave Airlie <airlied@redhat.com>
    Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 483e107f172d8a120579ffe077f834304aa95599
Author: Daniel Drake <dsd@laptop.org>
Date:   Wed May 8 15:37:19 2013 -0400

    mwifiex: fix setting of multicast filter

    commit ccd384b10420ac81ba3fb9b0a7d18272c7173552 upstream.

    A small bug in this code was causing the ALLMULTI filter to be set
    when in fact we were just wanting to program a selective multicast list
    to the hardware.

    Fix that bug and remove a redundant if condition in the code that
    follows.

    This fixes wakeup behaviour when multicast WOL is enabled. Previously,
    all multicast packets would wake up the system. Now, only those that the
    host intended to receive trigger wakeups.

    Signed-off-by: Daniel Drake <dsd@laptop.org>
    Acked-by: Bing Zhao <bzhao@marvell.com>
    Signed-off-by: John W. Linville <linville@tuxdriver.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a7cacebc8eed5136de20315d0dd8de300e5d18b3
Author: Bing Zhao <bzhao@marvell.com>
Date:   Mon May 6 19:46:53 2013 -0700

    mwifiex: clear is_suspended flag when interrupt is received early

    commit 48795424acff7215d5eac0b52793a2c1eb3a6283 upstream.

    When the XO-4 with 8787 wireless is woken up due to wake-on-WLAN
    mwifiex is often flooded with "not allowed while suspended" messages
    and the interface is unusable.

    [  202.171609] int: sdio_ireg = 0x1
    [  202.180700] info: mwifiex_process_hs_config: auto cancelling host
                   sleep since there is interrupt from the firmware
    [  202.201880] event: wakeup device...
    [  202.211452] event: hs_deactivated
    [  202.514638] info: --- Rx: Data packet ---
    [  202.514753] data: 4294957544 BSS(0-0): Data <= kernel
    [  202.514825] PREP_CMD: device in suspended state
    [  202.514839] data: dequeuing the packet ec7248c0 ec4869c0
    [  202.514886] mwifiex_write_data_sync: not allowed while suspended
    [  202.514886] host_to_card, write iomem (1) failed: -1
    [  202.514917] mwifiex_write_data_sync: not allowed while suspended
    [  202.514936] host_to_card, write iomem (2) failed: -1
    [  202.514949] mwifiex_write_data_sync: not allowed while suspended
    [  202.514965] host_to_card, write iomem (3) failed: -1
    [  202.514976] mwifiex_write_data_async failed: 0xFFFFFFFF

    This can be readily reproduced when putting the XO-4 in a loop where
    it goes to sleep due to inactivity, but then wakes up due to an
    incoming ping. The error is hit within an hour or two.

    This issue happens when an interrupt comes in early while host sleep
    is still activated. Driver handles this case by auto cancelling host
    sleep. However is_suspended flag is still set which prevents any cmd
    or data from being sent to firmware. Fix it by clearing is_suspended
    flag in this path.

    Reported-by: Daniel Drake <dsd@laptop.org>
    Tested-by: Daniel Drake <dsd@laptop.org>
    Signed-off-by: Bing Zhao <bzhao@marvell.com>
    Signed-off-by: John W. Linville <linville@tuxdriver.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 61ed7336516e074d426f2f7c1e041846d7fa5c12
Author: Felix Fietkau <nbd@openwrt.org>
Date:   Sat Apr 27 11:47:01 2013 +0200

    ath9k: fix key allocation error handling for powersave keys

    commit 4ef69d0394cba8caa9f75d3f2e53429bfb8b3045 upstream.

    If no keycache slots are available, ath_key_config can return -ENOSPC.
    If the key index is not checked for errors, it can lead to logspam that
    looks like this: "ath: wiphy0: keyreset: keycache entry 228 out of range"
    This can cause follow-up errors if the invalid keycache index gets
    used for tx.

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

commit 7fb7465071b6f553c5c5cd8aca704cfc6896917c
Author: Lachlan McIlroy <lmcilroy@redhat.com>
Date:   Sun May 5 23:10:00 2013 -0400

    ext4: limit group search loop for non-extent files

    commit e6155736ad76b2070652745f9e54cdea3f0d8567 upstream.

    In the case where we are allocating for a non-extent file,
    we must limit the groups we allocate from to those below
    2^32 blocks, and ext4_mb_regular_allocator() attempts to
    do this initially by putting a cap on ngroups for the
    subsequent search loop.

    However, the initial target group comes in from the
    allocation context (ac), and it may already be beyond
    the artificially limited ngroups.  In this case,
    the limit

    	if (group == ngroups)
    		group = 0;

    at the top of the loop is never true, and the loop will
    run away.

    Catch this case inside the loop and reset the search to
    start at group 0.

    [sandeen@redhat.com: add commit msg & comments]

    Signed-off-by: Lachlan McIlroy <lmcilroy@redhat.com>
    Signed-off-by: Eric Sandeen <sandeen@redhat.com>
    Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b9cbfd27308999d2ae56d1d341a3a77f91d04a19
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Fri May 3 15:02:50 2013 +0200

    tick: Cleanup NOHZ per cpu data on cpu down

    commit 4b0c0f294f60abcdd20994a8341a95c8ac5eeb96 upstream.

    Prarit reported a crash on CPU offline/online. The reason is that on
    CPU down the NOHZ related per cpu data of the dead cpu is not cleaned
    up. If at cpu online an interrupt happens before the per cpu tick
    device is registered the irq_enter() check potentially sees stale data
    and dereferences a NULL pointer.

    Cleanup the data after the cpu is dead.

    Reported-by: Prarit Bhargava <prarit@redhat.com>
    Cc: Mike Galbraith <bitbucket@online.de>
    Link: http://lkml.kernel.org/r/alpine.LFD.2.02.1305031451561.2886@ionos
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e8934286bc36b73db88a361d31f8eb617ee5cf03
Author: Tirupathi Reddy <tirupath@codeaurora.org>
Date:   Tue May 14 13:59:02 2013 +0530

    timer: Don't reinitialize the cpu base lock during CPU_UP_PREPARE

    commit 42a5cf46cd56f46267d2a9fcf2655f4078cd3042 upstream.

    An inactive timer's base can refer to a offline cpu's base.

    In the current code, cpu_base's lock is blindly reinitialized each
    time a CPU is brought up. If a CPU is brought online during the period
    that another thread is trying to modify an inactive timer on that CPU
    with holding its timer base lock, then the lock will be reinitialized
    under its feet. This leads to following SPIN_BUG().

    <0> BUG: spinlock already unlocked on CPU#3, kworker/u:3/1466
    <0> lock: 0xe3ebe000, .magic: dead4ead, .owner: kworker/u:3/1466, .owner_cpu: 1
    <4> [<c0013dc4>] (unwind_backtrace+0x0/0x11c) from [<c026e794>] (do_raw_spin_unlock+0x40/0xcc)
    <4> [<c026e794>] (do_raw_spin_unlock+0x40/0xcc) from [<c076c160>] (_raw_spin_unlock+0x8/0x30)
    <4> [<c076c160>] (_raw_spin_unlock+0x8/0x30) from [<c009b858>] (mod_timer+0x294/0x310)
    <4> [<c009b858>] (mod_timer+0x294/0x310) from [<c00a5e04>] (queue_delayed_work_on+0x104/0x120)
    <4> [<c00a5e04>] (queue_delayed_work_on+0x104/0x120) from [<c04eae00>] (sdhci_msm_bus_voting+0x88/0x9c)
    <4> [<c04eae00>] (sdhci_msm_bus_voting+0x88/0x9c) from [<c04d8780>] (sdhci_disable+0x40/0x48)
    <4> [<c04d8780>] (sdhci_disable+0x40/0x48) from [<c04bf300>] (mmc_release_host+0x4c/0xb0)
    <4> [<c04bf300>] (mmc_release_host+0x4c/0xb0) from [<c04c7aac>] (mmc_sd_detect+0x90/0xfc)
    <4> [<c04c7aac>] (mmc_sd_detect+0x90/0xfc) from [<c04c2504>] (mmc_rescan+0x7c/0x2c4)
    <4> [<c04c2504>] (mmc_rescan+0x7c/0x2c4) from [<c00a6a7c>] (process_one_work+0x27c/0x484)
    <4> [<c00a6a7c>] (process_one_work+0x27c/0x484) from [<c00a6e94>] (worker_thread+0x210/0x3b0)
    <4> [<c00a6e94>] (worker_thread+0x210/0x3b0) from [<c00aad9c>] (kthread+0x80/0x8c)
    <4> [<c00aad9c>] (kthread+0x80/0x8c) from [<c000ea80>] (kernel_thread_exit+0x0/0x8)

    As an example, this particular crash occurred when CPU #3 is executing
    mod_timer() on an inactive timer whose base is refered to offlined CPU
    #2.  The code locked the timer_base corresponding to CPU #2. Before it
    could proceed, CPU #2 came online and reinitialized the spinlock
    corresponding to its base. Thus now CPU #3 held a lock which was
    reinitialized. When CPU #3 finally ended up unlocking the old cpu_base
    corresponding to CPU #2, we hit the above SPIN_BUG().

    CPU #0		CPU #3				       CPU #2
    ------		-------				       -------
    .....		 ......				      <Offline>
    		mod_timer()
    		 lock_timer_base
    		   spin_lock_irqsave(&base->lock)

    cpu_up(2)	 .....				        ......
    							init_timers_cpu()
    ....		 .....				    	spin_lock_init(&base->lock)
    .....		   spin_unlock_irqrestore(&base->lock)  ......
    		   <spin_bug>

    Allocation of per_cpu timer vector bases is done only once under
    "tvec_base_done[]" check. In the current code, spinlock_initialization
    of base->lock isn't under this check. When a CPU is up each time the
    base lock is reinitialized. Move base spinlock initialization under
    the check.

    Signed-off-by: Tirupathi Reddy <tirupath@codeaurora.org>
    Link: http://lkml.kernel.org/r/1368520142-4136-1-git-send-email-tirupath@codeaurora.org
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8ee29c2d66ae8aab9b28af5e83ec23dd99d8e500
Author: James Bottomley <JBottomley@Parallels.com>
Date:   Wed Apr 24 14:02:53 2013 -0700

    SCSI: sd: fix array cache flushing bug causing performance problems

    commit 39c60a0948cc06139e2fbfe084f83cb7e7deae3b upstream.

    Some arrays synchronize their full non volatile cache when the sd driver sends
    a SYNCHRONIZE CACHE command.  Unfortunately, they can have Terrabytes of this
    and we send a SYNCHRONIZE CACHE for every barrier if an array reports it has a
    writeback cache.  This leads to massive slowdowns on journalled filesystems.

    The fix is to allow userspace to turn off the writeback cache setting as a
    temporary measure (i.e. without doing the MODE SELECT to write it back to the
    device), so even though the device reported it has a writeback cache, the
    user, knowing that the cache is non volatile and all they care about is
    filesystem correctness, can turn that bit off in the kernel and avoid the
    performance ruinous (and safety irrelevant) SYNCHRONIZE CACHE commands.

    The way you do this is add a 'temporary' prefix when performing the usual
    cache setting operations, so

    echo temporary write through > /sys/class/scsi_disk/<disk>/cache_type

    Reported-by: Ric Wheeler <rwheeler@redhat.com>
    Signed-off-by: James Bottomley <JBottomley@Parallels.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a3b5b07e0d750c300d771a0a8e5ad24898bcdd9b
Author: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Date:   Sun May 5 09:30:09 2013 -0400

    xen/vcpu/pvhvm: Fix vcpu hotplugging hanging.

    commit 7f1fc268c47491fd5e63548f6415fc8604e13003 upstream.

    If a user did:

    	echo 0 > /sys/devices/system/cpu/cpu1/online
    	echo 1 > /sys/devices/system/cpu/cpu1/online

    we would (this a build with DEBUG enabled) get to:
    smpboot: ++++++++++++++++++++=_---CPU UP  1
    .. snip..
    smpboot: Stack at about ffff880074c0ff44
    smpboot: CPU1: has booted.

    and hang. The RCU mechanism would kick in an try to IPI the CPU1
    but the IPIs (and all other interrupts) would never arrive at the
    CPU1. At first glance at least. A bit digging in the hypervisor
    trace shows that (using xenanalyze):

    [vla] d4v1 vec 243 injecting
       0.043163027 --|x d4v1 intr_window vec 243 src 5(vector) intr f3
    ]  0.043163639 --|x d4v1 vmentry cycles 1468
    ]  0.043164913 --|x d4v1 vmexit exit_reason PENDING_INTERRUPT eip ffffffff81673254
       0.043164913 --|x d4v1 inj_virq vec 243  real
      [vla] d4v1 vec 243 injecting
       0.043164913 --|x d4v1 intr_window vec 243 src 5(vector) intr f3
    ]  0.043165526 --|x d4v1 vmentry cycles 1472
    ]  0.043166800 --|x d4v1 vmexit exit_reason PENDING_INTERRUPT eip ffffffff81673254
       0.043166800 --|x d4v1 inj_virq vec 243  real
      [vla] d4v1 vec 243 injecting

    there is a pending event (subsequent debugging shows it is the IPI
    from the VCPU0 when smpboot.c on VCPU1 has done
    "set_cpu_online(smp_processor_id(), true)") and the guest VCPU1 is
    interrupted with the callback IPI (0xf3 aka 243) which ends up calling
    __xen_evtchn_do_upcall.

    The __xen_evtchn_do_upcall seems to do *something* but not acknowledge
    the pending events. And the moment the guest does a 'cli' (that is the
    ffffffff81673254 in the log above) the hypervisor is invoked again to
    inject the IPI (0xf3) to tell the guest it has pending interrupts.
    This repeats itself forever.

    The culprit was the per_cpu(xen_vcpu, cpu) pointer. At the bootup
    we set each per_cpu(xen_vcpu, cpu) to point to the
    shared_info->vcpu_info[vcpu] but later on use the VCPUOP_register_vcpu_info
    to register per-CPU  structures (xen_vcpu_setup).
    This is used to allow events for more than 32 VCPUs and for performance
    optimizations reasons.

    When the user performs the VCPU hotplug we end up calling the
    the xen_vcpu_setup once more. We make the hypercall which returns
    -EINVAL as it does not allow multiple registration calls (and
    already has re-assigned where the events are being set). We pick
    the fallback case and set per_cpu(xen_vcpu, cpu) to point to the
    shared_info->vcpu_info[vcpu] (which is a good fallback during bootup).
    However the hypervisor is still setting events in the register
    per-cpu structure (per_cpu(xen_vcpu_info, cpu)).

    As such when the events are set by the hypervisor (such as timer one),
    and when we iterate in __xen_evtchn_do_upcall we end up reading stale
    events from the shared_info->vcpu_info[vcpu] instead of the
    per_cpu(xen_vcpu_info, cpu) structures. Hence we never acknowledge the
    events that the hypervisor has set and the hypervisor keeps on reminding
    us to ack the events which we never do.

    The fix is simple. Don't on the second time when xen_vcpu_setup is
    called over-write the per_cpu(xen_vcpu, cpu) if it points to
    per_cpu(xen_vcpu_info).

    Acked-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
    Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 37cc8ba179a6e326d9074b23e8bccdf4cadd6b58
Author: Wei Yongjun <yongjun_wei@trendmicro.com.cn>
Date:   Fri May 10 14:37:15 2013 +0100

    dm snapshot: fix error return code in snapshot_ctr

    commit 09e8b813897a0f85bb401435d009228644c81214 upstream.

    Return -ENOMEM instead of success if unable to allocate pending
    exception mempool in snapshot_ctr.

    Signed-off-by: Wei Yongjun <yongjun_wei@trendmicro.com.cn>
    Signed-off-by: Alasdair G Kergon <agk@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 94adafe60f4a1ed621da67dde6cc457fd5255e18
Author: Bob Moore <robert.moore@intel.com>
Date:   Wed May 8 04:01:15 2013 +0000

    ACPICA: Fix possible buffer overflow during a field unit read operation

    commit 61388f9e5d93053cf399a356414f31f9b4814c6d upstream.

    Can only happen under these conditions: 1) The DSDT version is 1,
    meaning integers are 32-bits.  2) The field is between 33 and 64
    bits long.

    It applies cleanly back to ACPICA 20100806+ (Linux v2.6.37+).

    Signed-off-by: Bob Moore <robert.moore@intel.com>
    Signed-off-by: Lv Zheng <lv.zheng@intel.com>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8856cb69e794e8554109aef2568817a304b70ae7
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Tue Apr 30 10:24:41 2013 +0300

    ASoC: wm8994: missing break in wm8994_aif3_hw_params()

    commit 4495e46fe18f198366961bb2b324a694ef8a9b44 upstream.

    The missing break here means that we always return early and the
    function is a no-op.

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

commit f3fb49dfccbf7bb7005bd57bb7385c3ee80d8c52
Author: Aaro Koskinen <aaro.koskinen@iki.fi>
Date:   Wed May 8 16:48:00 2013 -0700

    ARM: OMAP: RX-51: change probe order of touchscreen and panel SPI devices

    commit e65f131a14726e5f1b880a528271a52428e5b3a5 upstream.

    Commit 9fdca9df (spi: omap2-mcspi: convert to module_platform_driver)
    broke the SPI display/panel driver probe on RX-51/N900. The exact cause is
    not fully understood, but it seems to be related to the probe order. SPI
    communication to the panel driver (spi1.2) fails unless the touchscreen
    (spi1.0) has been probed/initialized before. When the omap2-mcspi driver
    was converted to a platform driver, it resulted in that the devices are
    probed immediately after the board registers them in the order they are
    listed in the board file.

    Fix the issue by moving the touchscreen before the panel in the SPI
    device list.

    The patch fixes the following failure:

    [    1.260955] acx565akm spi1.2: invalid display ID
    [    1.265899] panel-acx565akm display0: acx_panel_probe panel detect error
    [    1.273071] omapdss CORE error: driver probe failed: -19

    Tested-by: Sebastian Reichel <sre@debian.org>
    Signed-off-by: Aaro Koskinen <aaro.koskinen@iki.fi>
    Cc: Pali Rohár <pali.rohar@gmail.com>
    Cc: Joni Lapilainen <joni.lapilainen@gmail.com>
    Cc: Tomi Valkeinen <tomi.valkeinen@ti.com>
    Cc: Felipe Balbi <balbi@ti.com>
    Signed-off-by: Tony Lindgren <tony@atomide.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e171327c07f33c79dab763e08feb7b0ad24dfe71
Author: Gleb Natapov <gleb@redhat.com>
Date:   Wed May 8 18:38:44 2013 +0300

    KVM: VMX: fix halt emulation while emulating invalid guest sate

    commit 8d76c49e9ffeee839bc0b7a3278a23f99101263e upstream.

    The invalid guest state emulation loop does not check halt_request
    which causes 100% cpu loop while guest is in halt and in invalid
    state, but more serious issue is that this leaves halt_request set, so
    random instruction emulated by vm86 #GP exit can be interpreted
    as halt which causes guest hang. Fix both problems by handling
    halt_request in emulation loop.

    Reported-by: Tomas Papan <tomas.papan@gmail.com>
    Tested-by: Tomas Papan <tomas.papan@gmail.com>
    Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Gleb Natapov <gleb@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Change-Id: If8759cb4ac5539af542c51863497a2bbb56ab81c