commit 1c08ea4b7c527e2b951d9315f88de24f3d46b0ca
Author: Ben Hutchings <ben@decadent.org.uk>
Date:   Wed Mar 20 15:03:42 2013 +0000

    Linux 3.2.41

commit 6022b67230dcb25c267e832d72223ffb54703cc8
Author: Alan Stern <stern@rowland.harvard.edu>
Date:   Thu Nov 17 16:42:19 2011 -0500

    NLS: improve UTF8 -> UTF16 string conversion routine
    
    commit 0720a06a7518c9d0c0125bd5d1f3b6264c55c3dd upstream.
    
    The utf8s_to_utf16s conversion routine needs to be improved.  Unlike
    its utf16s_to_utf8s sibling, it doesn't accept arguments specifying
    the maximum length of the output buffer or the endianness of its
    16-bit output.
    
    This patch (as1501) adds the two missing arguments, and adjusts the
    only two places in the kernel where the function is called.  A
    follow-on patch will add a third caller that does utilize the new
    capabilities.
    
    The two conversion routines are still annoyingly inconsistent in the
    way they handle invalid byte combinations.  But that's a subject for a
    different patch.
    
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    CC: Clemens Ladisch <clemens@ladisch.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 2d8db10e98fca5bb13e70c3f35d7c0ff79df638c
Author: Eric Sandeen <sandeen@redhat.com>
Date:   Sat Mar 9 15:18:39 2013 +0000

    btrfs: use rcu_barrier() to wait for bdev puts at unmount
    
    commit bc178622d40d87e75abc131007342429c9b03351 upstream.
    
    Doing this would reliably fail with -EBUSY for me:
    
    # mount /dev/sdb2 /mnt/scratch; umount /mnt/scratch; mkfs.btrfs -f /dev/sdb2
    ...
    unable to open /dev/sdb2: Device or resource busy
    
    because mkfs.btrfs tries to open the device O_EXCL, and somebody still has it.
    
    Using systemtap to track bdev gets & puts shows a kworker thread doing a
    blkdev put after mkfs attempts a get; this is left over from the unmount
    path:
    
    btrfs_close_devices
    	__btrfs_close_devices
    		call_rcu(&device->rcu, free_device);
    			free_device
    				INIT_WORK(&device->rcu_work, __free_device);
    				schedule_work(&device->rcu_work);
    
    so unmount might complete before __free_device fires & does its blkdev_put.
    
    Adding an rcu_barrier() to btrfs_close_devices() causes unmount to wait
    until all blkdev_put()s are done, and the device is truly free once
    unmount completes.
    
    Signed-off-by: Eric Sandeen <sandeen@redhat.com>
    Signed-off-by: Josef Bacik <jbacik@fusionio.com>
    Signed-off-by: Chris Mason <chris.mason@fusionio.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 3a6356e64de5d426feaa812fe4af37b13a756a3f
Author: Guo Chao <yan@linux.vnet.ibm.com>
Date:   Thu Feb 21 15:16:49 2013 -0800

    loopdev: remove an user triggerable oops
    
    commit b1a6650406875b9097a032eed89af50682fe1160 upstream.
    
    When loopdev is built as module and we pass an invalid parameter,
    loop_init() will return directly without deregister misc device, which
    will cause an oops when insert loop module next time because we left some
    garbage in the misc device list.
    
    Test case:
    sudo modprobe loop max_part=1024
    (failed due to invalid parameter)
    sudo modprobe loop
    (oops)
    
    Clean up nicely to avoid such oops.
    
    Signed-off-by: Guo Chao <yan@linux.vnet.ibm.com>
    Cc: Alexander Viro <viro@zeniv.linux.org.uk>
    Cc: Guo Chao <yan@linux.vnet.ibm.com>
    Cc: M. Hindess <hindessm@uk.ibm.com>
    Cc: Nikanth Karthikesan <knikanth@suse.de>
    Cc: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 54d75ff2c7caec91a8cd14b25c3fcf7256601184
Author: Guo Chao <yan@linux.vnet.ibm.com>
Date:   Thu Feb 21 15:16:45 2013 -0800

    loopdev: fix a deadlock
    
    commit 5370019dc2d2c2ff90e95d181468071362934f3a upstream.
    
    bd_mutex and lo_ctl_mutex can be held in different order.
    
    Path #1:
    
    blkdev_open
     blkdev_get
      __blkdev_get (hold bd_mutex)
       lo_open (hold lo_ctl_mutex)
    
    Path #2:
    
    blkdev_ioctl
     lo_ioctl (hold lo_ctl_mutex)
      lo_set_capacity (hold bd_mutex)
    
    Lockdep does not report it, because path #2 actually holds a subclass of
    lo_ctl_mutex.  This subclass seems creep into the code by mistake.  The
    patch author actually just mentioned it in the changelog, see commit
    f028f3b2 ("loop: fix circular locking in loop_clr_fd()"), also see:
    
    	http://marc.info/?l=linux-kernel&m=123806169129727&w=2
    
    Path #2 hold bd_mutex to call bd_set_size(), I've protected it
    with i_mutex in a previous patch, so drop bd_mutex at this site.
    
    Signed-off-by: Guo Chao <yan@linux.vnet.ibm.com>
    Cc: Alexander Viro <viro@zeniv.linux.org.uk>
    Cc: Guo Chao <yan@linux.vnet.ibm.com>
    Cc: M. Hindess <hindessm@uk.ibm.com>
    Cc: Nikanth Karthikesan <knikanth@suse.de>
    Cc: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit c1a782a5c7a83f4aa3239533619e93b1fc3ab79d
Author: Guo Chao <yan@linux.vnet.ibm.com>
Date:   Thu Feb 21 15:16:42 2013 -0800

    block: use i_size_write() in bd_set_size()
    
    commit d646a02a9d44d1421f273ae3923d97b47b918176 upstream.
    
    blkdev_ioctl(GETBLKSIZE) uses i_size_read() to read size of block device.
    If we update block size directly, reader may see intermediate result in
    some machines and configurations.  Use i_size_write() instead.
    
    Signed-off-by: Guo Chao <yan@linux.vnet.ibm.com>
    Cc: Alexander Viro <viro@zeniv.linux.org.uk>
    Cc: Guo Chao <yan@linux.vnet.ibm.com>
    Cc: M. Hindess <hindessm@uk.ibm.com>
    Cc: Nikanth Karthikesan <knikanth@suse.de>
    Cc: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 29db446a5e94c63403210afc28b7dc0a101562e3
Author: Laszlo Ersek <lersek@redhat.com>
Date:   Sun Dec 11 01:48:59 2011 +0000

    xen-netfront: delay gARP until backend switches to Connected
    
    commit 08e34eb14fe4cfd934b5c169a7682a969457c4ea upstream.
    
    After a guest is live migrated, the xen-netfront driver emits a gratuitous
    ARP message, so that networking hardware on the target host's subnet can
    take notice, and public routing to the guest is re-established. However,
    if the packet appears on the backend interface before the backend is added
    to the target host's bridge, the packet is lost, and the migrated guest's
    peers become unable to talk to the guest.
    
    A sufficient two-parts condition to prevent the above is:
    
    (1) ensure that the backend only moves to Connected xenbus state after its
    hotplug scripts completed, ie. the netback interface got added to the
    bridge; and
    
    (2) ensure the frontend only queues the gARP when it sees the backend move
    to Connected.
    
    These two together provide complete ordering. Sub-condition (1) is already
    satisfied by commit f942dc2552b8 in Linus' tree, based on commit
    6b0b80ca7165 from [1].
    
    In general, the full condition is sufficient, not necessary, because,
    according to [2], live migration has been working for a long time without
    satisfying sub-condition (2). However, after 6b0b80ca7165 was backported
    to the RHEL-5 host to ensure (1), (2) still proved necessary in the RHEL-6
    guest. This patch intends to provide (2) for upstream.
    
    The Reviewed-by line comes from [3].
    
    [1] git://xenbits.xen.org/people/ianc/linux-2.6.git#upstream/dom0/backend/netback-history
    [2] http://old-list-archives.xen.org/xen-devel/2011-06/msg01969.html
    [3] http://old-list-archives.xen.org/xen-devel/2011-07/msg00484.html
    
    Signed-off-by: Laszlo Ersek <lersek@redhat.com>
    Reviewed-by: Ian Campbell <ian.campbell@citrix.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 1bdb24f5ab52e64658f496a0dbfe04ffb56edaf6
Author: Jiang Liu <jiang.liu@huawei.com>
Date:   Tue Jul 31 16:43:30 2012 -0700

    mm/hotplug: correctly add new zone to all other nodes' zone lists
    
    commit 08dff7b7d629807dbb1f398c68dd9cd58dd657a1 upstream.
    
    When online_pages() is called to add new memory to an empty zone, it
    rebuilds all zone lists by calling build_all_zonelists().  But there's a
    bug which prevents the new zone to be added to other nodes' zone lists.
    
    online_pages() {
    	build_all_zonelists()
    	.....
    	node_set_state(zone_to_nid(zone), N_HIGH_MEMORY)
    }
    
    Here the node of the zone is put into N_HIGH_MEMORY state after calling
    build_all_zonelists(), but build_all_zonelists() only adds zones from
    nodes in N_HIGH_MEMORY state to the fallback zone lists.
    build_all_zonelists()
    
        ->__build_all_zonelists()
    	->build_zonelists()
    	    ->find_next_best_node()
    		->for_each_node_state(n, N_HIGH_MEMORY)
    
    So memory in the new zone will never be used by other nodes, and it may
    cause strange behavor when system is under memory pressure.  So put node
    into N_HIGH_MEMORY state before calling build_all_zonelists().
    
    Signed-off-by: Jianguo Wu <wujianguo@huawei.com>
    Signed-off-by: Jiang Liu <liuj97@gmail.com>
    Cc: Mel Gorman <mgorman@suse.de>
    Cc: Michal Hocko <mhocko@suse.cz>
    Cc: Minchan Kim <minchan@kernel.org>
    Cc: Rusty Russell <rusty@rustcorp.com.au>
    Cc: Yinghai Lu <yinghai@kernel.org>
    Cc: Tony Luck <tony.luck@intel.com>
    Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
    Cc: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
    Cc: David Rientjes <rientjes@google.com>
    Cc: Keping Chen <chenkeping@huawei.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.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>

commit f3fa0df5ebda0dc467920f9e855a7b9481b3dafd
Author: Sven Eckelmann <sven@narfation.org>
Date:   Sat Dec 10 15:28:36 2011 +0100

    batman-adv: Only write requested number of byte to user buffer
    
    commit b5a1eeef04cc7859f34dec9b72ea1b28e4aba07c upstream.
    
    Don't write more than the requested number of bytes of an batman-adv icmp
    packet to the userspace buffer. Otherwise unrelated userspace memory might get
    overridden by the kernel.
    
    Signed-off-by: Sven Eckelmann <sven@narfation.org>
    Signed-off-by: Marek Lindner <lindner_marek@yahoo.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 83257435faca1827b17e7e6e1766f9c0c216595d
Author: Paul Kot <pawlkt@gmail.com>
Date:   Sat Dec 10 15:28:34 2011 +0100

    batman-adv: bat_socket_read missing checks
    
    commit c00b6856fc642b234895cfabd15b289e76726430 upstream.
    
    Writing a icmp_packet_rr and then reading icmp_packet can lead to kernel
    memory corruption, if __user *buf is just below TASK_SIZE.
    
    Signed-off-by: Paul Kot <pawlkt@gmail.com>
    [sven@narfation.org: made it checkpatch clean]
    Signed-off-by: Sven Eckelmann <sven@narfation.org>
    Signed-off-by: Marek Lindner <lindner_marek@yahoo.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 0eb97065d4a9bc3944f5973ce4279d37b0ef4eb8
Author: Sarah Sharp <sarah.a.sharp@linux.intel.com>
Date:   Wed Mar 13 11:10:50 2013 -0700

    USB: Fix connected device switch to Inactive state.
    
    commit d3b9d7a9051d7024a93c76a84b2f84b3b66ad6d5 upstream.
    
    A USB 3.0 device can transition to the Inactive state if a U1 or U2 exit
    transition fails.  The current code in hub_events simply issues a warm
    reset, but does not call any pre-reset or post-reset driver methods (or
    unbind/rebind drivers without them).  Therefore the drivers won't know
    their device has just been reset.
    
    hub_events should instead call usb_reset_device.  This means
    hub_port_reset now needs to figure out whether it should issue a warm
    reset or a hot reset.
    
    Remove the FIXME note about needing disconnect() for a NOTATTACHED
    device.  This patch fixes that.
    
    Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
    Acked-by: Alan Stern <stern@rowland.harvard.edu>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 52cbf32ab420a8c4a43a9d5db2fb5ce917cd3205
Author: Sarah Sharp <sarah.a.sharp@linux.intel.com>
Date:   Wed Mar 13 11:10:36 2013 -0700

    USB: Rip out recursive call on warm port reset.
    
    commit a24a6078754f28528bc91e7e7b3e6ae86bd936d8 upstream.
    
    When a hot reset fails on a USB 3.0 port, the current port reset code
    recursively calls hub_port_reset inside hub_port_wait_reset.  This isn't
    ideal, since we should avoid recursive calls in the kernel, and it also
    doesn't allow us to issue multiple warm resets on reset failures.
    
    Rip out the recursive call.  Instead, add code to hub_port_reset to
    issue a warm reset if the hot reset fails, and try multiple warm resets
    before giving up on the port.
    
    In hub_port_wait_reset, remove the recursive call and re-indent.  The
    code is basically the same, except:
    
    1. It bails out early if the port has transitioned to Inactive or
    Compliance Mode after the reset completed.
    
    2. It doesn't consider a connect status change to be a failed reset.  If
    multiple warm resets needed to be issued, the connect status may have
    changed, so we need to ignore that and look at the port link state
    instead.  hub_port_reset will now do that.
    
    3. It unconditionally sets udev->speed on all types of successful
    resets.  The old recursive code would set the port speed when the second
    hub_port_reset returned.
    
    The old code did not handle connected devices needing a warm reset well.
    There were only two situations that the old code handled correctly: an
    empty port needing a warm reset, and a hot reset that migrated to a warm
    reset.
    
    When an empty port needed a warm reset, hub_port_reset was called with
    the warm variable set.  The code in hub_port_finish_reset would skip
    telling the USB core and the xHC host that the device was reset, because
    otherwise that would result in a NULL pointer dereference.
    
    When a USB 3.0 device reset migrated to a warm reset, the recursive call
    made the call stack look like this:
    
    hub_port_reset(warm = false)
            hub_wait_port_reset(warm = false)
                    hub_port_reset(warm = true)
                            hub_wait_port_reset(warm = true)
                            hub_port_finish_reset(warm = true)
                            (return up the call stack to the first wait)
    
            hub_port_finish_reset(warm = false)
    
    The old code didn't want to notify the USB core or the xHC host of device reset
    twice, so it only did it in the second call to hub_port_finish_reset,
    when warm was set to false.  This was necessary because
    before patch two ("USB: Ignore xHCI Reset Device status."), the USB core
    would pay attention to the xHC Reset Device command error status, and
    the second call would always fail.
    
    Now that we no longer have the recursive call, and warm can change from
    false to true in hub_port_reset, we need to have hub_port_finish_reset
    unconditionally notify the USB core and the xHC of the device reset.
    
    In hub_port_finish_reset, unconditionally clear the connect status
    change (CSC) bit for USB 3.0 hubs when the port reset is done.  If we
    had to issue multiple warm resets for a device, that bit may have been
    set if the device went into SS.Inactive and then was successfully warm
    reset.
    
    Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
    Acked-by: Alan Stern <stern@rowland.harvard.edu>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 5bd7c59c9340d87bfd271bed1091aace6a36185b
Author: Sarah Sharp <sarah.a.sharp@linux.intel.com>
Date:   Thu Mar 7 16:24:47 2013 -0800

    USB: Prepare for refactoring by adding extra udev checks.
    
    commit 2d4fa940f99663c82ba55b2244638833b388e4e2 upstream.
    
    The next patch will refactor the hub port code to rip out the recursive
    call to hub_port_reset on a failed hot reset.  In preparation for that,
    make sure all code paths can deal with being called with a NULL udev.
    The usb_device will not be valid if warm reset was issued because a port
    transitioned to the Inactive or Compliance Mode on a device connect.
    
    This patch should have no effect on current behavior.
    
    Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
    Acked-by: Alan Stern <stern@rowland.harvard.edu>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 541f862ec5242ceaa9992554ab4e68dbbb316680
Author: Sarah Sharp <sarah.a.sharp@linux.intel.com>
Date:   Thu Mar 7 16:24:45 2013 -0800

    USB: Don't use EHCI port sempahore for USB 3.0 hubs.
    
    commit 0fe51aa5eee51db7c7ecd201d42a977ad79c58b6 upstream.
    
    The EHCI host controller needs to prevent EHCI initialization when the
    UHCI or OHCI companion controller is in the middle of a port reset.  It
    uses ehci_cf_port_reset_rwsem to do this.  USB 3.0 hubs can't be under
    an EHCI host controller, so it makes no sense to down the semaphore for
    USB 3.0 hubs.  It also makes the warm port reset code more complex.
    
    Don't down ehci_cf_port_reset_rwsem for USB 3.0 hubs.
    
    Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
    Acked-by: Alan Stern <stern@rowland.harvard.edu>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit d9737ff18a63da7671ff991f8d79a2d09fec66e5
Author: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Date:   Mon Feb 25 10:20:36 2013 -0500

    Fix: compat_rw_copy_check_uvector() misuse in aio, readv, writev, and security keys
    
    commit 8aec0f5d4137532de14e6554fd5dd201ff3a3c49 upstream.
    
    Looking at mm/process_vm_access.c:process_vm_rw() and comparing it to
    compat_process_vm_rw() shows that the compatibility code requires an
    explicit "access_ok()" check before calling
    compat_rw_copy_check_uvector(). The same difference seems to appear when
    we compare fs/read_write.c:do_readv_writev() to
    fs/compat.c:compat_do_readv_writev().
    
    This subtle difference between the compat and non-compat requirements
    should probably be debated, as it seems to be error-prone. In fact,
    there are two others sites that use this function in the Linux kernel,
    and they both seem to get it wrong:
    
    Now shifting our attention to fs/aio.c, we see that aio_setup_iocb()
    also ends up calling compat_rw_copy_check_uvector() through
    aio_setup_vectored_rw(). Unfortunately, the access_ok() check appears to
    be missing. Same situation for
    security/keys/compat.c:compat_keyctl_instantiate_key_iov().
    
    I propose that we add the access_ok() check directly into
    compat_rw_copy_check_uvector(), so callers don't have to worry about it,
    and it therefore makes the compat call code similar to its non-compat
    counterpart. Place the access_ok() check in the same location where
    copy_from_user() can trigger a -EFAULT error in the non-compat code, so
    the ABI behaviors are alike on both compat and non-compat.
    
    While we are here, fix compat_do_readv_writev() so it checks for
    compat_rw_copy_check_uvector() negative return values.
    
    And also, fix a memory leak in compat_keyctl_instantiate_key_iov() error
    handling.
    
    Acked-by: Linus Torvalds <torvalds@linux-foundation.org>
    Acked-by: Al Viro <viro@ZenIV.linux.org.uk>
    Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
    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>

commit f56cb892159202ee6486c7fd3c5dec3f82bd5114
Author: Mathias Krause <minipli@googlemail.com>
Date:   Tue Feb 5 18:19:13 2013 +0100

    crypto: user - fix info leaks in report API
    
    commit 9a5467bf7b6e9e02ec9c3da4e23747c05faeaac6 upstream.
    
    Three errors resulting in kernel memory disclosure:
    
    1/ The structures used for the netlink based crypto algorithm report API
    are located on the stack. As snprintf() does not fill the remainder of
    the buffer with null bytes, those stack bytes will be disclosed to users
    of the API. Switch to strncpy() to fix this.
    
    2/ crypto_report_one() does not initialize all field of struct
    crypto_user_alg. Fix this to fix the heap info leak.
    
    3/ For the module name we should copy only as many bytes as
    module_name() returns -- not as much as the destination buffer could
    hold. But the current code does not and therefore copies random data
    from behind the end of the module name, as the module name is always
    shorter than CRYPTO_MAX_ALG_NAME.
    
    Also switch to use strncpy() to copy the algorithm's name and
    driver_name. They are strings, after all.
    
    Signed-off-by: Mathias Krause <minipli@googlemail.com>
    Cc: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    [bwh: Backported to 3.2: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit a5f562fe78164e6c52284aa47323c86dc49f9873
Author: Guenter Roeck <linux@roeck-us.net>
Date:   Thu Feb 21 10:27:54 2013 -0800

    hwmon: (pmbus/ltc2978) Fix temperature reporting
    
    commit 8c958c703ef8804093437959221951eaf0e1e664 upstream.
    
    On LTC2978, only READ_TEMPERATURE is supported. It reports
    the internal junction temperature. This register is unpaged.
    
    On LTC3880, READ_TEMPERATURE and READ_TEMPERATURE2 are supported.
    READ_TEMPERATURE is paged and reports external temperatures.
    READ_TEMPERATURE2 is unpaged and reports the internal junction
    temperature.
    
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Acked-by: Jean Delvare <khali@linux-fr.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 7d7402a9901660541d036c28ec9064918f32cb33
Author: Axel Lin <axel.lin@ingics.com>
Date:   Thu Mar 14 16:27:18 2013 +0800

    hwmon: (lineage-pem) Add missing terminating entry for pem_[input|fan]_attributes
    
    commit df069079c153d22adf6c28dcc0b1cf62bba75167 upstream.
    
    Signed-off-by: Axel Lin <axel.lin@ingics.com>
    Acked-by: Jean Delvare <khali@linux-fr.org>
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 125664f0332d57735ba5b79aed4d94a3c04f1090
Author: Kees Cook <keescook@chromium.org>
Date:   Wed Mar 13 14:59:33 2013 -0700

    signal: always clear sa_restorer on execve
    
    commit 2ca39528c01a933f6689cd6505ce65bd6d68a530 upstream.
    
    When the new signal handlers are set up, the location of sa_restorer is
    not cleared, leaking a parent process's address space location to
    children.  This allows for a potential bypass of the parent's ASLR by
    examining the sa_restorer value returned when calling sigaction().
    
    Based on what should be considered "secret" about addresses, it only
    matters across the exec not the fork (since the VMAs haven't changed
    until the exec).  But since exec sets SIG_DFL and keeps sa_restorer,
    this is where it should be fixed.
    
    Given the few uses of sa_restorer, a "set" function was not written
    since this would be the only use.  Instead, we use
    __ARCH_HAS_SA_RESTORER, as already done in other places.
    
    Example of the leak before applying this patch:
    
      $ cat /proc/$$/maps
      ...
      7fb9f3083000-7fb9f3238000 r-xp 00000000 fd:01 404469 .../libc-2.15.so
      ...
      $ ./leak
      ...
      7f278bc74000-7f278be29000 r-xp 00000000 fd:01 404469 .../libc-2.15.so
      ...
      1 0 (nil) 0x7fb9f30b94a0
      2 4000000 (nil) 0x7f278bcaa4a0
      3 4000000 (nil) 0x7f278bcaa4a0
      4 0 (nil) 0x7fb9f30b94a0
      ...
    
    [akpm@linux-foundation.org: use SA_RESTORER for backportability]
    Signed-off-by: Kees Cook <keescook@chromium.org>
    Reported-by: Emese Revfy <re.emese@gmail.com>
    Cc: Emese Revfy <re.emese@gmail.com>
    Cc: PaX Team <pageexec@freemail.hu>
    Cc: Al Viro <viro@zeniv.linux.org.uk>
    Cc: Oleg Nesterov <oleg@redhat.com>
    Cc: "Eric W. Biederman" <ebiederm@xmission.com>
    Cc: Serge Hallyn <serge.hallyn@canonical.com>
    Cc: Julien Tinnes <jln@google.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 8e535446a78958888b16db9d619d0f60c1950622
Author: Oliver Neukum <oneukum@suse.de>
Date:   Tue Mar 12 14:52:42 2013 +0100

    USB: cdc-wdm: fix buffer overflow
    
    commit c0f5ecee4e741667b2493c742b60b6218d40b3aa upstream.
    
    The buffer for responses must not overflow.
    If this would happen, set a flag, drop the data and return
    an error after user space has read all remaining data.
    
    Signed-off-by: Oliver Neukum <oliver@neukum.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    [bwh: Backported to 3.2: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit cd1444055c4a0e6af16751335828d2db5ddf919a
Author: Marcin Jurkowski <marcin1j@gmail.com>
Date:   Sat Mar 2 14:50:15 2013 +0100

    w1: fix oops when w1_search is called from netlink connector
    
    commit 9d1817cab2f030f6af360e961cc69bb1da8ad765 upstream.
    
    On Sat, Mar 02, 2013 at 10:45:10AM +0100, Sven Geggus wrote:
    > This is the bad commit I found doing git bisect:
    > 04f482faf50535229a5a5c8d629cf963899f857c is the first bad commit
    > commit 04f482faf50535229a5a5c8d629cf963899f857c
    > Author: Patrick McHardy <kaber@trash.net>
    > Date:   Mon Mar 28 08:39:36 2011 +0000
    
    Good job. I was too lazy to bisect for bad commit;)
    
    Reading the code I found problematic kthread_should_stop call from netlink
    connector which causes the oops. After applying a patch, I've been testing
    owfs+w1 setup for nearly two days and it seems to work very reliable (no
    hangs, no memleaks etc).
    More detailed description and possible fix is given below:
    
    Function w1_search can be called from either kthread or netlink callback.
    While the former works fine, the latter causes oops due to kthread_should_stop
    invocation.
    
    This patch adds a check if w1_search is serving netlink command, skipping
    kthread_should_stop invocation if so.
    
    Signed-off-by: Marcin Jurkowski <marcin1j@gmail.com>
    Acked-by: Evgeniy Polyakov <zbr@ioremap.net>
    Cc: Josh Boyer <jwboyer@gmail.com>
    Tested-by: Sven Geggus <lists@fuchsschwanzdomain.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    [bwh: Backported to 3.2: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 0c0e37536ded9ea09152791b2ee534b613a59d2c
Author: Steve Conklin <sconklin@canonical.com>
Date:   Thu Mar 7 17:19:33 2013 -0600

    usb: serial: Add Rigblaster Advantage to device table
    
    commit a57e82a18779ab8a5e5a1f5841cef937cf578913 upstream.
    
    The Rigblaster Advantage is an amateur radio interface sold by West Mountain
    Radio. It contains a cp210x serial interface but the device ID is not in
    the driver.
    
    Signed-off-by: Steve Conklin <sconklin@canonical.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 88ef123457c203b3c2a40ecb9b3022ecdd7b7dcb
Author: Paul Bolle <pebolle@tiscali.nl>
Date:   Sat Mar 9 23:16:44 2013 +0100

    tty: serial: fix typo "ARCH_S5P6450"
    
    commit 827aa0d36d486f359808c8fb931cf7a71011a09d upstream.
    
    This could have been either ARCH_S5P64X0 or CPU_S5P6450. Looking at
    commit 2555e663b367b8d555e76023f4de3f6338c28d6c ("ARM: S5P64X0: Add UART
    serial support for S5P6450") - which added this typo - makes clear this
    should be CPU_S5P6450.
    
    Signed-off-by: Paul Bolle <pebolle@tiscali.nl>
    Acked-by: Kukjin Kim <kgene.kim@samsung.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    [bwh: Backported to 3.2: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 80d17151fa38f2caf1fd3d60f862ba6e4c19ab0c
Author: Wang YanQing <udknight@gmail.com>
Date:   Fri Mar 1 11:47:20 2013 +0800

    serial: 8250_pci: add support for another kind of NetMos Technology PCI 9835 Multi-I/O Controller
    
    commit 8d2f8cd424ca0b99001f3ff4f5db87c4e525f366 upstream.
    
    01:08.0 Communication controller: NetMos Technology PCI 9835 Multi-I/O Controller (rev 01)
    	Subsystem: Device [1000:0012]
    	Control: I/O+ Mem+ BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
    	Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
    	Interrupt: pin A routed to IRQ 20
    	Region 0: I/O ports at e050 [size=8]
    	Region 1: I/O ports at e040 [size=8]
    	Region 2: I/O ports at e030 [size=8]
    	Region 3: I/O ports at e020 [size=8]
    	Region 4: I/O ports at e010 [size=8]
    	Region 5: I/O ports at e000 [size=16]
    
    Signed-off-by: Wang YanQing <udknight@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    [bwh: Backported to 3.2: adjust filename]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 7b2f4ae43091e451325541868ddee7a62354f4d4
Author: Scott Ashcroft <scott.ashcroft@talk21.com>
Date:   Sun Mar 3 21:35:06 2013 +0000

    Fix 4 port and add support for 8 port 'Unknown' PCI serial port cards
    
    commit d13402a4a944e72612a9ec5c9190e35717c02a9d upstream.
    
    I've managed to find an 8 port version of the card 4 port card which was discussed here:
    
    http://marc.info/?l=linux-serial&m=120760744205314&w=2
    
    Looking back at that thread there were two issues in the original patch.
    
    1) The I/O ports for the UARTs are within BAR2 not BAR0. This can been seen in the original post.
    2) A serial quirk isn't needed as these cards have no memory in BAR0 which makes pci_plx9050_init just return.
    
    This patch fixes the 4 port support to use BAR2, removes the bogus quirk and adds support for the 8 port card.
    
    $ lspci -vvv -n -s 00:08.0
    00:08.0 0780: 10b5:9050 (rev 01)
    	Subsystem: 10b5:1588
    	Control: I/O+ Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
    	Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
    	Interrupt: pin A routed to IRQ 17
    	Region 1: I/O ports at ff00 [size=128]
    	Region 2: I/O ports at fe00 [size=64]
    	Region 3: I/O ports at fd00 [size=8]
    	Capabilities: <access denied>
    	Kernel driver in use: serial
    
    $ dmesg | grep 0000:00:08.0:
    [    0.083320] pci 0000:00:08.0: [10b5:9050] type 0 class 0x000780
    [    0.083355] pci 0000:00:08.0: reg 14: [io  0xff00-0xff7f]
    [    0.083369] pci 0000:00:08.0: reg 18: [io  0xfe00-0xfe3f]
    [    0.083382] pci 0000:00:08.0: reg 1c: [io  0xfd00-0xfd07]
    [    0.083460] pci 0000:00:08.0: PME# supported from D0 D3hot
    [    1.212867] 0000:00:08.0: ttyS4 at I/O 0xfe00 (irq = 17) is a 16550A
    [    1.233073] 0000:00:08.0: ttyS5 at I/O 0xfe08 (irq = 17) is a 16550A
    [    1.253270] 0000:00:08.0: ttyS6 at I/O 0xfe10 (irq = 17) is a 16550A
    [    1.273468] 0000:00:08.0: ttyS7 at I/O 0xfe18 (irq = 17) is a 16550A
    [    1.293666] 0000:00:08.0: ttyS8 at I/O 0xfe20 (irq = 17) is a 16550A
    [    1.313863] 0000:00:08.0: ttyS9 at I/O 0xfe28 (irq = 17) is a 16550A
    [    1.334061] 0000:00:08.0: ttyS10 at I/O 0xfe30 (irq = 17) is a 16550A
    [    1.354258] 0000:00:08.0: ttyS11 at I/O 0xfe38 (irq = 17) is a 16550A
    
    Signed-off-by: Scott Ashcroft <scott.ashcroft@talk21.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    [bwh: Backported to 3.2: adjust filename, context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 3aed32554e8ab466645973aae1809bd8ff33d351
Author: Ley Foon Tan <lftan@altera.com>
Date:   Thu Mar 7 10:28:37 2013 +0800

    tty/serial: Add support for Altera serial port
    
    commit e06c93cacb82dd147266fd1bdb2d0a0bd45ff2c1 upstream.
    
    Add support for Altera 8250/16550 compatible serial port.
    
    Signed-off-by: Ley Foon Tan <lftan@altera.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    [bwh: Backported to 3.2: adjust filenames, context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit c1dd1f576c5ce265bb8e186f01c91340a5138f49
Author: David Howells <dhowells@redhat.com>
Date:   Tue Mar 12 16:44:31 2013 +1100

    keys: fix race with concurrent install_user_keyrings()
    
    commit 0da9dfdd2cd9889201bc6f6f43580c99165cd087 upstream.
    
    This fixes CVE-2013-1792.
    
    There is a race in install_user_keyrings() that can cause a NULL pointer
    dereference when called concurrently for the same user if the uid and
    uid-session keyrings are not yet created.  It might be possible for an
    unprivileged user to trigger this by calling keyctl() from userspace in
    parallel immediately after logging in.
    
    Assume that we have two threads both executing lookup_user_key(), both
    looking for KEY_SPEC_USER_SESSION_KEYRING.
    
    	THREAD A			THREAD B
    	===============================	===============================
    					==>call install_user_keyrings();
    	if (!cred->user->session_keyring)
    	==>call install_user_keyrings()
    					...
    					user->uid_keyring = uid_keyring;
    	if (user->uid_keyring)
    		return 0;
    	<==
    	key = cred->user->session_keyring [== NULL]
    					user->session_keyring = session_keyring;
    	atomic_inc(&key->usage); [oops]
    
    At the point thread A dereferences cred->user->session_keyring, thread B
    hasn't updated user->session_keyring yet, but thread A assumes it is
    populated because install_user_keyrings() returned ok.
    
    The race window is really small but can be exploited if, for example,
    thread B is interrupted or preempted after initializing uid_keyring, but
    before doing setting session_keyring.
    
    This couldn't be reproduced on a stock kernel.  However, after placing
    systemtap probe on 'user->session_keyring = session_keyring;' that
    introduced some delay, the kernel could be crashed reliably.
    
    Fix this by checking both pointers before deciding whether to return.
    Alternatively, the test could be done away with entirely as it is checked
    inside the mutex - but since the mutex is global, that may not be the best
    way.
    
    Signed-off-by: David Howells <dhowells@redhat.com>
    Reported-by: Mateusz Guzik <mguzik@redhat.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: James Morris <james.l.morris@oracle.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 058f677c359d91e6692dc9a9da36b2e3eadf36ba
Author: Lars-Peter Clausen <lars@metafoo.de>
Date:   Sat Mar 9 15:28:44 2013 +0100

    ext3: Fix format string issues
    
    commit 8d0c2d10dd72c5292eda7a06231056a4c972e4cc upstream.
    
    ext3_msg() takes the printk prefix as the second parameter and the
    format string as the third parameter. Two callers of ext3_msg omit the
    prefix and pass the format string as the second parameter and the first
    parameter to the format string as the third parameter. In both cases
    this string comes from an arbitrary source. Which means the string may
    contain format string characters, which will
    lead to undefined and potentially harmful behavior.
    
    The issue was introduced in commit 4cf46b67eb("ext3: Unify log messages
    in ext3") and is fixed by this patch.
    
    Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
    Signed-off-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 0081426e77c53ed62a6b2bcd5125c2d6b4131ea5
Author: Dan Williams <dcbw@redhat.com>
Date:   Tue Feb 19 09:47:09 2013 -0600

    qcaux: add Franklin U600
    
    commit 2d90e63603ac235aecd7d20e234616e0682c8b1f upstream.
    
    4 ports; AT/PPP is standard CDC-ACM.  The other three (added by this
    patch) are QCDM/DIAG, possibly GPS, and unknown.
    
    Signed-off-by: Dan Williams <dcbw@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 847beac7146215a5502765592e6b090b12253450
Author: Malcolm Priestley <tvboxspy@gmail.com>
Date:   Mon Feb 18 19:54:18 2013 +0000

    staging: vt6656: Fix oops on resume from suspend.
    
    commit 6987a6dabfc40222ef767f67b57212fe3a0225fb upstream.
    
    Remove usb_put_dev from vt6656_suspend and usb_get_dev
    from vt6566_resume.
    
    These are not normally in suspend/resume functions.
    
    Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit a4e0e07269289a65dcbf5c315195dd23563d68f0
Author: Matwey V. Kornilov <matwey@sai.msu.ru>
Date:   Sat Mar 9 13:57:32 2013 +0400

    usb: cp210x new Vendor/Device IDs
    
    commit be3101c23394af59694c8a2aae6d07f5da62fea5 upstream.
    
    This patch adds support for the Lake Shore Cryotronics devices to
    the CP210x driver.
    
    These lines are ported from cp210x driver distributed by Lake Shore web site:
       http://www.lakeshore.com/Documents/Lake%20Shore%20cp210x-3.0.0.tar.gz
    and licensed under the terms of GPLv2.
    
    Moreover, I've tested this changes with Lake Shore 335 in my labs.
    
    Signed-off-by: Matwey V. Kornilov <matwey@sai.msu.ru>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 276f1b19cd817a286be0d91e18961b136b44397f
Author: Takashi Iwai <tiwai@suse.de>
Date:   Fri Mar 8 18:11:17 2013 +0100

    ALSA: seq: Fix missing error handling in snd_seq_timer_open()
    
    commit 66efdc71d95887b652a742a5dae51fa834d71465 upstream.
    
    snd_seq_timer_open() didn't catch the whole error path but let through
    if the timer id is a slave.  This may lead to Oops by accessing the
    uninitialized pointer.
    
     BUG: unable to handle kernel NULL pointer dereference at 00000000000002ae
     IP: [<ffffffff819b3477>] snd_seq_timer_open+0xe7/0x130
     PGD 785cd067 PUD 76964067 PMD 0
     Oops: 0002 [#4] SMP
     CPU 0
     Pid: 4288, comm: trinity-child7 Tainted: G      D W 3.9.0-rc1+ #100 Bochs Bochs
     RIP: 0010:[<ffffffff819b3477>]  [<ffffffff819b3477>] snd_seq_timer_open+0xe7/0x130
     RSP: 0018:ffff88006ece7d38  EFLAGS: 00010246
     RAX: 0000000000000286 RBX: ffff88007851b400 RCX: 0000000000000000
     RDX: 000000000000ffff RSI: ffff88006ece7d58 RDI: ffff88006ece7d38
     RBP: ffff88006ece7d98 R08: 000000000000000a R09: 000000000000fffe
     R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000000000
     R13: ffff8800792c5400 R14: 0000000000e8f000 R15: 0000000000000007
     FS:  00007f7aaa650700(0000) GS:ffff88007f800000(0000) GS:0000000000000000
     CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
     CR2: 00000000000002ae CR3: 000000006efec000 CR4: 00000000000006f0
     DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
     DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
     Process trinity-child7 (pid: 4288, threadinfo ffff88006ece6000, task ffff880076a8a290)
     Stack:
      0000000000000286 ffffffff828f2be0 ffff88006ece7d58 ffffffff810f354d
      65636e6575716573 2065756575712072 ffff8800792c0030 0000000000000000
      ffff88006ece7d98 ffff8800792c5400 ffff88007851b400 ffff8800792c5520
     Call Trace:
      [<ffffffff810f354d>] ? trace_hardirqs_on+0xd/0x10
      [<ffffffff819b17e9>] snd_seq_queue_timer_open+0x29/0x70
      [<ffffffff819ae01a>] snd_seq_ioctl_set_queue_timer+0xda/0x120
      [<ffffffff819acb9b>] snd_seq_do_ioctl+0x9b/0xd0
      [<ffffffff819acbe0>] snd_seq_ioctl+0x10/0x20
      [<ffffffff811b9542>] do_vfs_ioctl+0x522/0x570
      [<ffffffff8130a4b3>] ? file_has_perm+0x83/0xa0
      [<ffffffff810f354d>] ? trace_hardirqs_on+0xd/0x10
      [<ffffffff811b95ed>] sys_ioctl+0x5d/0xa0
      [<ffffffff813663fe>] ? trace_hardirqs_on_thunk+0x3a/0x3f
      [<ffffffff81faed69>] system_call_fastpath+0x16/0x1b
    
    Reported-and-tested-by: Tommi Rantala <tt.rantala@gmail.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit e9a1e5cd4a732b97aeb0bf6869634021a90f6933
Author: Amit Shah <amit.shah@redhat.com>
Date:   Fri Mar 8 11:30:18 2013 +1100

    virtio: rng: disallow multiple device registrations, fixes crashes
    
    commit e84e7a56a3aa2963db506299e29a5f3f09377f9b upstream.
    
    The code currently only supports one virtio-rng device at a time.
    Invoking guests with multiple devices causes the guest to blow up.
    
    Check if we've already registered and initialised the driver.  Also
    cleanup in case of registration errors or hot-unplug so that a new
    device can be used.
    
    Reported-by: Peter Krempa <pkrempa@redhat.com>
    Reported-by: <yunzheng@redhat.com>
    Signed-off-by: Amit Shah <amit.shah@redhat.com>
    Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit e4922fddf907936782d199d2608a52d769a7fc97
Author: Konstantin Khlebnikov <khlebnikov@openvz.org>
Date:   Tue Mar 5 09:42:59 2013 +0000

    e1000e: fix pci-device enable-counter balance
    
    commit 4e0855dff094b0d56d6b5b271e0ce7851cc1e063 upstream.
    
    This patch removes redundant and unbalanced pci_disable_device() from
    __e1000_shutdown(). pci_clear_master() is enough, device can go into
    suspended state with elevated enable_cnt.
    
    Bug was introduced in commit 23606cf5d1192c2b17912cb2ef6e62f9b11de133
    ("e1000e / PCI / PM: Add basic runtime PM support (rev. 4)") in v2.6.35
    
    Cc: Bruce Allan <bruce.w.allan@intel.com>
    Signed-off-by: Konstantin Khlebnikov <khlebnikov@openvz.org>
    Acked-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Tested-by: Borislav Petkov <bp@suse.de>
    Tested-by: Aaron Brown <aaron.f.brown@intel.com>
    Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 5369b4e376562673feb5cf0ad7d23e0a64704fb9
Author: Christian Schmiedl <christian.schmiedl@gemalto.com>
Date:   Wed Mar 6 17:08:50 2013 +0100

    USB: added support for Cinterion's products AH6 and PLS8
    
    commit 1941138e1c024ecb5bd797d414928d3eb94d8662 upstream.
    
    add support for Cinterion's products AH6 and PLS8 by adding Product IDs
    and USB_DEVICE tuples.
    
    Signed-off-by: Christian Schmiedl <christian.schmiedl@gemalto.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 8bcbe61371806144b36823787c0f0e7a6b06483d
Author: Bjørn Mork <bjorn@mork.no>
Date:   Mon Mar 4 14:19:21 2013 +0100

    USB: storage: fix Huawei mode switching regression
    
    commit ab4b71644a26d1ab92b987b2fd30e17c25e89f85 upstream.
    
    This reverts commit 200e0d99 ("USB: storage: optimize to match the
    Huawei USB storage devices and support new switch command" and the
    followup bugfix commit cd060956 ("USB: storage: properly handle
    the endian issues of idProduct").
    
    The commit effectively added a large number of Huawei devices to
    the deprecated usb-storage mode switching logic.  Many of these
    devices have been in use and supported by the userspace
    usb_modeswitch utility for years.  Forcing the switching inside
    the kernel causes a number of regressions as a result of ignoring
    existing onfigurations, and also completely takes away the ability
    to configure mode switching per device/system/user.
    
    Known regressions caused by this:
     - Some of the devices support multiple modes, using different
      switching commands.  There are existing configurations taking
      advantage of this.
    
     - There is a real use case for disabling mode switching and
      instead mounting the exposed storage device. This becomes
      impossible with switching logic inside the usb-storage driver.
    
     - At least on device fail as a result of the usb-storage switching
      command, becoming completely unswitchable. This is possibly a
      firmware bug, but still a regression because the device work as
      expected using usb_modeswitch defaults.
    
    In-kernel mode switching was deprecated years ago with the
    development of the more user friendly userspace alternatives. The
    existing list of devices in usb-storage was only kept to prevent
    breaking already working systems.  The long term plan is to remove
    the list, not to add to it. Ref:
    http://permalink.gmane.org/gmane.linux.usb.general/28543
    
    Cc: <fangxiaozhi@huawei.com>
    Signed-off-by: Bjørn Mork <bjorn@mork.no>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 2564893431be80057a737629283db892055003bf
Author: Bjørn Mork <bjorn@mork.no>
Date:   Wed Feb 27 15:52:56 2013 +0100

    USB: option: add Huawei E5331
    
    commit daec90e7382cbd0e73eb6861109b3da91e5ab1f3 upstream.
    
    Another device using CDC ACM with vendor specific protocol to mark
    serial functions.
    
    Signed-off-by: Bjørn Mork <bjorn@mork.no>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 7eb2731cfc7a24768ccb2e2548a32d145d339ee5
Author: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Date:   Tue Mar 5 13:14:19 2013 -0500

    xen/pciback: Don't disable a PCI device that is already disabled.
    
    commit bdc5c1812cea6efe1aaefb3131fcba28cd0b2b68 upstream.
    
    While shuting down a HVM guest with pci devices passed through we
    get this:
    
    pciback 0000:04:00.0: restoring config space at offset 0x4 (was 0x100000, writing 0x100002)
    ------------[ cut here ]------------
    WARNING: at drivers/pci/pci.c:1397 pci_disable_device+0x88/0xa0()
    Hardware name: MS-7640
    Device pciback
    disabling already-disabled device
    Modules linked in:
    Pid: 53, comm: xenwatch Not tainted 3.9.0-rc1-20130304a+ #1
    Call Trace:
     [<ffffffff8106994a>] warn_slowpath_common+0x7a/0xc0
     [<ffffffff81069a31>] warn_slowpath_fmt+0x41/0x50
     [<ffffffff813cf288>] pci_disable_device+0x88/0xa0
     [<ffffffff814554a7>] xen_pcibk_reset_device+0x37/0xd0
     [<ffffffff81454b6f>] ? pcistub_put_pci_dev+0x6f/0x120
     [<ffffffff81454b8d>] pcistub_put_pci_dev+0x8d/0x120
     [<ffffffff814582a9>] __xen_pcibk_release_devices+0x59/0xa0
    
    This fixes the bug.
    
    Reported-and-Tested-by: Sander Eikelenboom <linux@eikelenboom.it>
    Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 0edb34d87ec58f4f1f9309e4ca9d0fa85be474c3
Author: Al Viro <viro@ZenIV.linux.org.uk>
Date:   Tue Mar 12 02:59:49 2013 +0000

    vfs: fix pipe counter breakage
    
    commit a930d8790552658140d7d0d2e316af4f0d76a512 upstream.
    
    If you open a pipe for neither read nor write, the pipe code will not
    add any usage counters to the pipe, causing the 'struct pipe_inode_info"
    to be potentially released early.
    
    That doesn't normally matter, since you cannot actually use the pipe,
    but the pipe release code - particularly fasync handling - still expects
    the actual pipe infrastructure to all be there.  And rather than adding
    NULL pointer checks, let's just disallow this case, the same way we
    already do for the named pipe ("fifo") case.
    
    This is ancient going back to pre-2.4 days, and until trinity, nobody
    naver noticed.
    
    Reported-by: Dave Jones <davej@redhat.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 8885a53947b37ab206c8e3d8ca30ee06cb179ddf
Author: Tu, Xiaobing <xiaobing.tu@intel.com>
Date:   Tue Oct 23 01:03:00 2012 +0200

    Fix memory leak in cpufreq stats.
    
    commit e37736777254ce1abc85493a5cacbefe5983b896 upstream.
    
    When system enters sleep, non-boot CPUs will be disabled.
    Cpufreq stats sysfs is created when the CPU is up, but it is not
    freed when the CPU is going down. This will cause memory leak.
    
    Signed-off-by: xiaobing tu <xiaobing.tu@intel.com>
    Signed-off-by: guifang tang <guifang.tang@intel.com>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 3125bdd601790d03f36343d9d0941c5f94244f27
Author: Eric W. Biederman <ebiederm@xmission.com>
Date:   Mon Mar 11 17:41:28 2013 -0700

    decnet: Fix disappearing sysctl entries
    
    When decnet is built as a module a simple:
    echo 0.0 >/proc/sys/net/decnet/node_address
    
    results in most of the sysctl entries under /proc/sys/net/decnet and
    /proc/sys/net/decnet/conf disappearing.
    
    For more details see http://www.spinics.net/lists/netdev/msg226123.html.
    
    This change applies the same workaround used in
    net/core/sysctl_net_core.c and net/ipv6/sysctl_net_ipv6.c of creating
    a skeleton of decnet sysctl entries before doing anything else.
    
    The problem first appeared in kernel 2.6.27.  The later rewrite of
    sysctl in kernel 3.4 restored the previous behavior and eliminated the
    need for this workaround.
    
    This patch was heavily inspired by a similar but more complex patch by
    Larry Baker.
    
    Reported-by: Larry Baker <baker@usgs.gov>
    Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 3ac94a54e1e69d5e510c92c56dda242a7398ce54
Author: Steven Rostedt <srostedt@redhat.com>
Date:   Wed Feb 27 21:48:09 2013 -0500

    ftrace: Update the kconfig for DYNAMIC_FTRACE
    
    commit db05021d49a994ee40a9735d9c3cb0060c9babb8 upstream.
    
    The prompt to enable DYNAMIC_FTRACE (the ability to nop and
    enable function tracing at run time) had a confusing statement:
    
     "enable/disable ftrace tracepoints dynamically"
    
    This was written before tracepoints were added to the kernel,
    but now that tracepoints have been added, this is very confusing
    and has confused people enough to give wrong information during
    presentations.
    
    Not only that, I looked at the help text, and it still references
    that dreaded daemon that use to wake up once a second to update
    the nop locations and brick NICs, that hasn't been around for over
    five years.
    
    Time to bring the text up to the current decade.
    
    Reported-by: Ezequiel Garcia <elezegarcia@gmail.com>
    Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 7feecf3f2b587e535550bb3e7bf75b2fee06fccf
Author: Josh Boyer <jwboyer@redhat.com>
Date:   Mon Mar 11 17:48:53 2013 -0400

    efi: be more paranoid about available space when creating variables
    
    commit 68d929862e29a8b52a7f2f2f86a0600423b093cd upstream.
    
    UEFI variables are typically stored in flash. For various reasons, avaiable
    space is typically not reclaimed immediately upon the deletion of a
    variable - instead, the system will garbage collect during initialisation
    after a reboot.
    
    Some systems appear to handle this garbage collection extremely poorly,
    failing if more than 50% of the system flash is in use. This can result in
    the machine refusing to boot. The safest thing to do for the moment is to
    forbid writes if they'd end up using more than half of the storage space.
    We can make this more finegrained later if we come up with a method for
    identifying the broken machines.
    
    Signed-off-by: Matthew Garrett <matthew.garrett@nebula.com>
    Signed-off-by: Matt Fleming <matt.fleming@intel.com>
    [bwh: Backported to 3.2:
     - Drop efivarfs changes and unused check_var_size()
     - Add error codes to include/linux/efi.h, added upstream by
       commit 5d9db883761a ('efi: Add support for a UEFI variable filesystem')
     - Add efi_status_to_err(), added upstream by commit 7253eaba7b17
       ('efivarfs: Return an error if we fail to read a variable')]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 3b048fc196139b840d79b316405bede9b5d3c4c2
Author: Josh Boyer <jwboyer@redhat.com>
Date:   Mon Mar 11 17:47:42 2013 -0400

    efivars: Disable external interrupt while holding efivars->lock
    
    commit 81fa4e581d9283f7992a0d8c534bb141eb840a14 upstream.
    
    [Problem]
    There is a scenario which efi_pstore fails to log messages in a panic case.
    
     - CPUA holds an efi_var->lock in either efivarfs parts
       or efi_pstore with interrupt enabled.
     - CPUB panics and sends IPI to CPUA in smp_send_stop().
     - CPUA stops with holding the lock.
     - CPUB kicks efi_pstore_write() via kmsg_dump(KSMG_DUMP_PANIC)
       but it returns without logging messages.
    
    [Patch Description]
    This patch disables an external interruption while holding efivars->lock
    as follows.
    
    In efi_pstore_write() and get_var_data(), spin_lock/spin_unlock is
    replaced by spin_lock_irqsave/spin_unlock_irqrestore because they may
    be called in an interrupt context.
    
    In other functions, they are replaced by spin_lock_irq/spin_unlock_irq.
    because they are all called from a process context.
    
    By applying this patch, we can avoid the problem above with
    a following senario.
    
     - CPUA holds an efi_var->lock with interrupt disabled.
     - CPUB panics and sends IPI to CPUA in smp_send_stop().
     - CPUA receives the IPI after releasing the lock because it is
       disabling interrupt while holding the lock.
     - CPUB waits for one sec until CPUA releases the lock.
     - CPUB kicks efi_pstore_write() via kmsg_dump(KSMG_DUMP_PANIC)
       And it can hold the lock successfully.
    
    Signed-off-by: Seiji Aguchi <seiji.aguchi@hds.com>
    Acked-by: Mike Waychison <mikew@google.com>
    Acked-by: Matt Fleming <matt.fleming@intel.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>
    [bwh: Backported to 3.2:
     - Drop efivarfs changes
     - Adjust context
     - Drop change to efi_pstore_erase(), which is implemented using
       efi_pstore_write() here]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 316d0bb70f66a2682c19494f2d1fdebfa00de1ac
Author: Seiji Aguchi <seiji.aguchi@hds.com>
Date:   Wed Nov 14 20:25:37 2012 +0000

    efi_pstore: Check remaining space with QueryVariableInfo() before writing data
    
    commit d80a361d779a9f19498943d1ca84243209cd5647 upstream.
    
    [Issue]
    
    As discussed in a thread below, Running out of space in EFI isn't a well-tested scenario.
    And we wouldn't expect all firmware to handle it gracefully.
    http://marc.info/?l=linux-kernel&m=134305325801789&w=2
    
    On the other hand, current efi_pstore doesn't check a remaining space of storage at writing time.
    Therefore, efi_pstore may not work if it tries to write a large amount of data.
    
    [Patch Description]
    
    To avoid handling the situation above, this patch checks if there is a space enough to log with
    QueryVariableInfo() before writing data.
    
    Signed-off-by: Seiji Aguchi <seiji.aguchi@hds.com>
    Acked-by: Mike Waychison <mikew@google.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 689901ce9cedd2d34a5404dda146d0604cbc2a5e
Author: Ilya Zykov <ilya@ilyx.ru>
Date:   Mon Mar 4 23:19:41 2013 +0400

    tty: Correct tty buffer flush.
    
    commit 64325a3be08d364a62ee8f84b2cf86934bc2544a upstream.
    
      The root of problem is carelessly zeroing pointer(in function __tty_buffer_flush()),
    when another thread can use it. It can be cause of "NULL pointer dereference".
      Main idea of the patch, this is never free last (struct tty_buffer) in the active buffer.
    Only flush the data for ldisc(buf->head->read = buf->head->commit).
    At that moment driver can collect(write) data in buffer without conflict.
    It is repeat behavior of flush_to_ldisc(), only without feeding data to ldisc.
    
    Signed-off-by: Ilya Zykov <ilya@ilyx.ru>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 8c92cb1f49bd56a28c38315103dea7b0dd792027
Author: Shuah Khan <shuah.khan@hp.com>
Date:   Thu Feb 28 14:39:50 2013 -0700

    iommu/amd: Initialize device table after dma_ops
    
    commit f528d980c17b8714aedc918ba86e058af914d66b upstream.
    
    When dma_ops are initialized the unity mappings are created. The
    init_device_table_dma() function makes sure DMA from all devices is
    blocked by default. This opens a short window in time where DMA to
    unity mapped regions is blocked by the IOMMU. Make sure this does not
    happen by initializing the device table after dma_ops.
    
    Tested on 3.2.38
    
    Signed-off-by: Joerg Roedel <joro@8bytes.org>
    Signed-off-by: Shuah Khan <shuah.khan@hp.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit fea5417579faa777befe2ad4f111e3fa6f2675b1
Author: James Ralston <james.d.ralston@intel.com>
Date:   Fri Feb 8 17:34:47 2013 -0800

    ahci: Add Device IDs for Intel Wellsburg PCH
    
    commit 151743fd8dfb02956c5184b5f4f0f42677eb75bc upstream.
    
    This patch adds the AHCI-mode SATA Device IDs for the Intel Wellsburg PCH
    
    Signed-off-by: James Ralston <james.d.ralston@intel.com>
    Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 766c2c591e346254e56867d08203ecbb8a6bfb0c
Author: Seth Heasley <seth.heasley@intel.com>
Date:   Fri Jan 25 12:01:05 2013 -0800

    ahci: AHCI-mode SATA patch for Intel Avoton DeviceIDs
    
    commit 29e674dd5c8e781589f09c3ee139c80f6da274e4 upstream.
    
    This patch adds the AHCI and RAID-mode SATA DeviceIDs for the Intel Avoton SOC.
    
    Signed-off-by: Seth Heasley <seth.heasley@intel.com>
    Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 5333b150a47169ce354da77700503e36c899e8ba
Author: James Ralston <james.d.ralston@intel.com>
Date:   Thu Aug 9 09:02:31 2012 -0700

    ahci: Add Device IDs for Intel Lynx Point-LP PCH
    
    commit 77b12bc9cf7b10c7c1a04ca45272fbb4287902d0 upstream.
    
    This patch adds the AHCI-mode SATA Device IDs for the Intel Lynx Point-LP PCH
    
    Signed-off-by: James Ralston <james.d.ralston@intel.com>
    Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit eb4d7add813c6980d73d0bae90572b6f56535552
Author: Seth Heasley <seth.heasley@intel.com>
Date:   Mon Jan 23 16:27:30 2012 -0800

    ahci: AHCI-mode SATA patch for Intel Lynx Point DeviceIDs
    
    commit ea4ace66782fc35245133d2766f38d62827761cc upstream.
    
    This patch adds the AHCI-mode SATA DeviceIDs for the Intel Lynx Point PCH.
    
    Signed-off-by: Seth Heasley <seth.heasley@intel.com>
    Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 76610d6dfbe4d5f47ce59582d99e1355efaea916
Author: Fernando Luis Vázquez Cao <fernando_b1@lab.ntt.co.jp>
Date:   Tue Jan 22 15:20:38 2013 +0900

    HID: clean up quirk for Sony RF receivers
    
    commit 99d249021abd4341771523ed8dd7946276103432 upstream.
    
    Document what the fix-up is does and make it more robust by ensuring
    that it is only applied to the USB interface that corresponds to the
    mouse (sony_report_fixup() is called once per interface during probing).
    
    Cc: linux-input@vger.kernel.org
    Cc: linux-usb@vger.kernel.org
    Cc: linux-kernel@vger.kernel.org
    Signed-off-by: Fernando Luis Vazquez Cao <fernando@oss.ntt.co.jp>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 3207e0076af2a4565230f7c280675383321ecd16
Author: Fernando Luis Vázquez Cao <fernando_b1@lab.ntt.co.jp>
Date:   Tue Jan 15 19:40:48 2013 +0900

    HID: add support for Sony RF receiver with USB product id 0x0374
    
    commit a464918419f94a0043d2f549d6defb4c3f69f68a upstream.
    
    Some Vaio desktop computers, among them the VGC-LN51JGB multimedia PC, have
    a RF receiver, multi-interface USB device 054c:0374, that is used to connect
    a wireless keyboard and a wireless mouse.
    
    The keyboard works flawlessly, but the mouse (VGP-WMS3 in my case) does not
    seem to be generating any pointer events. The problem is that the mouse pointer
    is wrongly declared as a constant non-data variable in the report descriptor
    (see lsusb and usbhid-dump output below), with the consequence that it is
    ignored by the HID code.
    
    Add this device to the have-special-driver list and fix up the report
    descriptor in the Sony-specific driver which happens to already have a fixup
    for a similar firmware bug.
    
    # lsusb -vd 054C:0374
    Bus 003 Device 002: ID 054c:0374 Sony Corp.
    Device Descriptor:
      bLength                18
      bDescriptorType         1
      bcdUSB               2.00
      bDeviceClass            0 (Defined at Interface level)
      bDeviceSubClass         0
      bDeviceProtocol         0
      bMaxPacketSize0         8
      idVendor           0x054c Sony Corp.
      idProduct          0x0374
      iSerial                 0
    [...]
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        1
          bAlternateSetting       0
          bNumEndpoints           1
          bInterfaceClass         3 Human Interface Device
          bInterfaceSubClass      1 Boot Interface Subclass
          bInterfaceProtocol      2 Mouse
          iInterface              2 RF Receiver
    [...]
              Report Descriptor: (length is 100)
    [...]
                Item(Global): Usage Page, data= [ 0x01 ] 1
                                Generic Desktop Controls
                Item(Local ): Usage, data= [ 0x30 ] 48
                                Direction-X
                Item(Local ): Usage, data= [ 0x31 ] 49
                                Direction-Y
                Item(Global): Report Count, data= [ 0x02 ] 2
                Item(Global): Report Size, data= [ 0x08 ] 8
                Item(Global): Logical Minimum, data= [ 0x81 ] 129
                Item(Global): Logical Maximum, data= [ 0x7f ] 127
                Item(Main  ): Input, data= [ 0x07 ] 7
                                Constant Variable Relative No_Wrap Linear
                                Preferred_State No_Null_Position Non_Volatile Bitfield
    
    # usbhid-dump
    003:002:001:DESCRIPTOR         1357910009.758544
     05 01 09 02 A1 01 05 01 09 02 A1 02 85 01 09 01
     A1 00 05 09 19 01 29 05 95 05 75 01 15 00 25 01
     81 02 75 03 95 01 81 01 05 01 09 30 09 31 95 02
     75 08 15 81 25 7F 81 07 A1 02 85 01 09 38 35 00
     45 00 15 81 25 7F 95 01 75 08 81 06 C0 A1 02 85
     01 05 0C 15 81 25 7F 95 01 75 08 0A 38 02 81 06
     C0 C0 C0 C0
    
    Cc: linux-input@vger.kernel.org
    Cc: linux-usb@vger.kernel.org
    Cc: linux-kernel@vger.kernel.org
    Signed-off-by: Fernando Luis Vazquez Cao <fernando@oss.ntt.co.jp>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 81745233d8df3f506f4f571fb0e6dc43a54ba906
Author: Johannes Berg <johannes.berg@intel.com>
Date:   Mon Feb 25 16:01:34 2013 +0100

    iwlwifi: always copy first 16 bytes of commands
    
    commit 8a964f44e01ad3bbc208c3e80d931ba91b9ea786 upstream.
    
    The FH hardware will always write back to the scratch field
    in commands, even host commands not just TX commands, which
    can overwrite parts of the command. This is problematic if
    the command is re-used (with IWL_HCMD_DFL_NOCOPY) and can
    cause calibration issues.
    
    Address this problem by always putting at least the first
    16 bytes into the buffer we also use for the command header
    and therefore make the DMA engine write back into this.
    
    For commands that are smaller than 16 bytes also always map
    enough memory for the DMA engine to write back to.
    
    Reviewed-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    [bwh: Backported to 3.2:
     - Adjust context
     - Drop the IWL_HCMD_DFL_DUP handling
     - Fix descriptor addresses and lengths for tracepoint, but otherwise
       leave it unchanged]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit f2551932b8733af396ba761995e6a65bcc82e633
Author: Ben Hutchings <ben@decadent.org.uk>
Date:   Fri Mar 8 12:43:32 2013 -0800

    dmi_scan: fix missing check for _DMI_ signature in smbios_present()
    
    commit a40e7cf8f06b4e322ba902e4e9f6a6b0c2daa907 upstream.
    
    Commit 9f9c9cbb6057 ("drivers/firmware/dmi_scan.c: fetch dmi version
    from SMBIOS if it exists") hoisted the check for "_DMI_" into
    dmi_scan_machine(), which means that we don't bother to check for
    "_DMI_" at offset 16 in an SMBIOS entry.  smbios_present() may also call
    dmi_present() for an address where we found "_SM_", if it failed further
    validation.
    
    Check for "_DMI_" in smbios_present() before calling dmi_present().
    
    [akpm@linux-foundation.org: fix build]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
    Reported-by: Tim McGrath <tmhikaru@gmail.com>
    Tested-by: Tim Mcgrath <tmhikaru@gmail.com>
    Cc: Zhenzhong Duan <zhenzhong.duan@oracle.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

commit 62485ec79d20f6ba1e86f55fee06e6accc7b9c6e
Author: Alex Deucher <alexander.deucher@amd.com>
Date:   Wed Feb 27 12:01:58 2013 -0500

    drm/radeon: add primary dac adj quirk for R200 board
    
    commit e8fc41377f5037ff7a661ea06adc05f1daec1548 upstream.
    
    vbios values are wrong leading to colors that are
    too bright.  Use the default values instead.
    
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 80e841638927953e753fa80b95077a3e88caab61
Author: Takashi Iwai <tiwai@suse.de>
Date:   Tue Mar 5 15:43:39 2013 +0100

    ALSA: vmaster: Fix slave change notification
    
    commit 2069d483b39a603a5f3428a19d3b4ac89aa97f48 upstream.
    
    When a value of a vmaster slave control is changed, the ctl change
    notification is sometimes ignored.  This happens when the master
    control overrides, e.g. when the corresponding master control is
    muted.  The reason is that slave_put() returns the value of the actual
    slave put callback, and it doesn't reflect the virtual slave value
    change.
    
    This patch fixes the function just to return 1 whenever a slave value
    is changed.
    
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 4533ed41f0afffa36413ce4f04cc4413e215b321
Author: Rusty Russell <rusty@rustcorp.com.au>
Date:   Tue Mar 5 10:07:08 2013 +1030

    hw_random: make buffer usable in scatterlist.
    
    commit f7f154f1246ccc5a0a7e9ce50932627d60a0c878 upstream.
    
    virtio_rng feeds the randomness buffer handed by the core directly
    into the scatterlist, since commit bb347d98079a547e80bd4722dee1de61e4dca0e8.
    
    However, if CONFIG_HW_RANDOM=m, the static buffer isn't a linear address
    (at least on most archs).  We could fix this in virtio_rng, but it's actually
    far easier to just do it in the core as virtio_rng would have to allocate
    a buffer every time (it doesn't know how much the core will want to read).
    
    Reported-by: Aurelien Jarno <aurelien@aurel32.net>
    Tested-by: Aurelien Jarno <aurelien@aurel32.net>
    Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 87c7f521968a1491af48d34a4ea6566485e6426c
Author: Mark Brown <broonie@opensource.wolfsonmicro.com>
Date:   Sat Mar 2 15:33:30 2013 +0800

    hwmon: (sht15) Check return value of regulator_enable()
    
    commit 3e78080f81481aa8340374d5a37ae033c1cf4272 upstream.
    
    Not having power is a pretty serious error so check that we are able to
    enable the supply and error out if we can't.
    
    Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    [bwh: Backported to 3.2: driver does not use the devm API to manage
     memory, so goto err_free_data rather than returning on error]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit df2f41aa5ec3857956ea6c6c77049101c06eebba
Author: Guenter Roeck <linux@roeck-us.net>
Date:   Thu Feb 21 10:49:40 2013 -0800

    hwmon: (pmbus/ltc2978) Use detected chip ID to select supported functionality
    
    commit f366fccd0809f13ba20d64cae3c83f7338c88af7 upstream.
    
    We read the chip ID from the chip, use it to determine if the chip ID provided
    to the driver is correct, and report it if wrong. We should also use the
    correct chip ID to select supported functionality.
    
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Acked-by: Jean Delvare <khali@linux-fr.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit d99248b8a03e548521ac4d87588ab1356e990618
Author: Guenter Roeck <linux@roeck-us.net>
Date:   Thu Feb 21 09:33:25 2013 -0800

    hwmon: (pmbus/ltc2978) Fix peak attribute handling
    
    commit dbd712c2272764a536e29ad6841dba74989a39d9 upstream.
    
    Peak attributes were not initialized and cleared correctly.
    Also, temp2_max is only supported on page 0 and thus does not need to be
    an array.
    
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Acked-by: Jean Delvare <khali@linux-fr.org>
    [bwh: Backported to 3.2: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 3e6f87330536fcbc887ccabb30887096f6ce5c0a
Author: Will Deacon <will.deacon@arm.com>
Date:   Thu Feb 28 17:49:11 2013 +0100

    ARM: 7663/1: perf: fix ARMv7 EVTYPE_MASK to include NSH bit
    
    commit f2fe09b055e2549de41fb107b34c60bac4a1b0cf upstream.
    
    Masked out PMXEVTYPER.NSH means that we can't enable profiling at PL2,
    regardless of the settings in the HDCR.
    
    This patch fixes the broken mask.
    
    Reported-by: Christoffer Dall <cdall@cs.columbia.edu>
    Signed-off-by: Will Deacon <will.deacon@arm.com>
    Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 0149797bb6d01648df71fed72b88591c75bca5a5
Author: Ville Syrjälä <ville.syrjala@linux.intel.com>
Date:   Fri Feb 22 16:53:38 2013 +0200

    drm/i915: Don't clobber crtc->fb when queue_flip fails
    
    commit 4a35f83b2b7c6aae3fc0d1c4554fdc99dc33ad07 upstream.
    
    Restore crtc->fb to the old framebuffer if queue_flip fails.
    
    While at it, kill the pointless intel_fb temp variable.
    
    v2: Update crtc->fb before queue_flip and restore it back
        after a failure.
    
    Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
    Reported-and-Tested-by: Mika Kuoppala <mika.kuoppala@intel.com>
    Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
    [bwh: Backported to 3.2: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit e0179c31e0818d5efc87a475f2b83979ef2d3585
Author: Mikulas Patocka <mpatocka@redhat.com>
Date:   Fri Mar 1 22:45:47 2013 +0000

    dm snapshot: add missing module aliases
    
    commit 23cb21092eb9dcec9d3604b68d95192b79915890 upstream.
    
    Add module aliases so that autoloading works correctly if the user
    tries to activate "snapshot-origin" or "snapshot-merge" targets.
    
    Reference: https://bugzilla.redhat.com/889973
    
    Reported-by: Chao Yang <chyang@redhat.com>
    Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
    Signed-off-by: Alasdair G Kergon <agk@redhat.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 4c8e681cfb1ce38e5c335ea943acc19be49bb302
Author: Mikulas Patocka <mpatocka@redhat.com>
Date:   Fri Mar 1 22:45:44 2013 +0000

    dm: fix truncated status strings
    
    commit fd7c092e711ebab55b2688d3859d95dfd0301f73 upstream.
    
    Avoid returning a truncated table or status string instead of setting
    the DM_BUFFER_FULL_FLAG when the last target of a table fills the
    buffer.
    
    When processing a table or status request, the function retrieve_status
    calls ti->type->status. If ti->type->status returns non-zero,
    retrieve_status assumes that the buffer overflowed and sets
    DM_BUFFER_FULL_FLAG.
    
    However, targets don't return non-zero values from their status method
    on overflow. Most targets returns always zero.
    
    If a buffer overflow happens in a target that is not the last in the
    table, it gets noticed during the next iteration of the loop in
    retrieve_status; but if a buffer overflow happens in the last target, it
    goes unnoticed and erroneously truncated data is returned.
    
    In the current code, the targets behave in the following way:
    * dm-crypt returns -ENOMEM if there is not enough space to store the
      key, but it returns 0 on all other overflows.
    * dm-thin returns errors from the status method if a disk error happened.
      This is incorrect because retrieve_status doesn't check the error
      code, it assumes that all non-zero values mean buffer overflow.
    * all the other targets always return 0.
    
    This patch changes the ti->type->status function to return void (because
    most targets don't use the return code). Overflow is detected in
    retrieve_status: if the status method fills up the remaining space
    completely, it is assumed that buffer overflow happened.
    
    Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
    Signed-off-by: Alasdair G Kergon <agk@redhat.com>
    [bwh: Backported to 3.2:
     - Adjust context
     - dm_status_fn doesn't take a status_flags parameter
     - Bump the last component of each current version (verified not to
       match any version used in mainline)
     - Drop changes to dm-verity]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 6244df0906c25aa02324d38debc3f274bddc105d
Author: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Date:   Thu Feb 28 09:05:41 2013 -0500

    xen/pci: We don't do multiple MSI's.
    
    commit 884ac2978a295b7df3c4a686d3bff6932bbbb460 upstream.
    
    There is no hypercall to setup multiple MSI per PCI device.
    As such with these two new commits:
    -  08261d87f7d1b6253ab3223756625a5c74532293
       PCI/MSI: Enable multiple MSIs with pci_enable_msi_block_auto()
    - 5ca72c4f7c412c2002363218901eba5516c476b1
       AHCI: Support multiple MSIs
    
    we would call the PHYSDEVOP_map_pirq 'nvec' times with the same
    contents of the PCI device. Sander discovered that we would get
    the same PIRQ value 'nvec' times and return said values to the
    caller. That of course meant that the device was configured only
    with one MSI and AHCI would fail with:
    
    ahci 0000:00:11.0: version 3.0
    xen: registering gsi 19 triggering 0 polarity 1
    xen: --> pirq=19 -> irq=19 (gsi=19)
    (XEN) [2013-02-27 19:43:07] IOAPIC[0]: Set PCI routing entry (6-19 -> 0x99 -> IRQ 19 Mode:1 Active:1)
    ahci 0000:00:11.0: AHCI 0001.0200 32 slots 4 ports 6 Gbps 0xf impl SATA mode
    ahci 0000:00:11.0: flags: 64bit ncq sntf ilck pm led clo pmp pio slum part
    ahci: probe of 0000:00:11.0 failed with error -22
    
    That is b/c in ahci_host_activate the second call to
    devm_request_threaded_irq  would return -EINVAL as we passed in
    (on the second run) an IRQ that was never initialized.
    
    Reported-and-Tested-by: Sander Eikelenboom <linux@eikelenboom.it>
    Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 82db248291c30e0b83528ee21416047a6063fe28
Author: Jeff Layton <jlayton@redhat.com>
Date:   Fri Feb 1 15:11:01 2013 -0500

    cifs: ensure that cifs_get_root() only traverses directories
    
    commit ce2ac52105aa663056dfc17966ebed1bf93e6e64 upstream.
    
    Kjell Braden reported this oops:
    
    [  833.211970] BUG: unable to handle kernel NULL pointer dereference at           (null)
    [  833.212816] IP: [<          (null)>]           (null)
    [  833.213280] PGD 1b9b2067 PUD e9f7067 PMD 0
    [  833.213874] Oops: 0010 [#1] SMP
    [  833.214344] CPU 0
    [  833.214458] Modules linked in: des_generic md4 nls_utf8 cifs vboxvideo drm snd_intel8x0 snd_ac97_codec ac97_bus snd_pcm snd_seq_midi snd_rawmidi snd_seq_midi_event snd_seq bnep rfcomm snd_timer bluetooth snd_seq_device ppdev snd vboxguest parport_pc joydev mac_hid soundcore snd_page_alloc psmouse i2c_piix4 serio_raw lp parport usbhid hid e1000
    [  833.215629]
    [  833.215629] Pid: 1752, comm: mount.cifs Not tainted 3.0.0-rc7-bisectcifs-fec11dd9a0+ #18 innotek GmbH VirtualBox/VirtualBox
    [  833.215629] RIP: 0010:[<0000000000000000>]  [<          (null)>]           (null)
    [  833.215629] RSP: 0018:ffff8800119c9c50  EFLAGS: 00010282
    [  833.215629] RAX: ffffffffa02186c0 RBX: ffff88000c427780 RCX: 0000000000000000
    [  833.215629] RDX: 0000000000000000 RSI: ffff88000c427780 RDI: ffff88000c4362e8
    [  833.215629] RBP: ffff8800119c9c88 R08: ffff88001fc15e30 R09: 00000000d69515c7
    [  833.215629] R10: ffffffffa0201972 R11: ffff88000e8f6a28 R12: ffff88000c4362e8
    [  833.215629] R13: 0000000000000000 R14: 0000000000000000 R15: ffff88001181aaa6
    [  833.215629] FS:  00007f2986171700(0000) GS:ffff88001fc00000(0000) knlGS:0000000000000000
    [  833.215629] CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b
    [  833.215629] CR2: 0000000000000000 CR3: 000000001b982000 CR4: 00000000000006f0
    [  833.215629] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    [  833.215629] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
    [  833.215629] Process mount.cifs (pid: 1752, threadinfo ffff8800119c8000, task ffff88001c1c16f0)
    [  833.215629] Stack:
    [  833.215629]  ffffffff8116a9b5 ffff8800119c9c88 ffffffff81178075 0000000000000286
    [  833.215629]  0000000000000000 ffff88000c4276c0 ffff8800119c9ce8 ffff8800119c9cc8
    [  833.215629]  ffffffff8116b06e ffff88001bc6fc00 ffff88000c4276c0 ffff88000c4276c0
    [  833.215629] Call Trace:
    [  833.215629]  [<ffffffff8116a9b5>] ? d_alloc_and_lookup+0x45/0x90
    [  833.215629]  [<ffffffff81178075>] ? d_lookup+0x35/0x60
    [  833.215629]  [<ffffffff8116b06e>] __lookup_hash.part.14+0x9e/0xc0
    [  833.215629]  [<ffffffff8116b1d6>] lookup_one_len+0x146/0x1e0
    [  833.215629]  [<ffffffff815e4f7e>] ? _raw_spin_lock+0xe/0x20
    [  833.215629]  [<ffffffffa01eef0d>] cifs_do_mount+0x26d/0x500 [cifs]
    [  833.215629]  [<ffffffff81163bd3>] mount_fs+0x43/0x1b0
    [  833.215629]  [<ffffffff8117d41a>] vfs_kern_mount+0x6a/0xd0
    [  833.215629]  [<ffffffff8117e584>] do_kern_mount+0x54/0x110
    [  833.215629]  [<ffffffff8117fdc2>] do_mount+0x262/0x840
    [  833.215629]  [<ffffffff81108a0e>] ? __get_free_pages+0xe/0x50
    [  833.215629]  [<ffffffff8117f9ca>] ? copy_mount_options+0x3a/0x180
    [  833.215629]  [<ffffffff8118075d>] sys_mount+0x8d/0xe0
    [  833.215629]  [<ffffffff815ece82>] system_call_fastpath+0x16/0x1b
    [  833.215629] Code:  Bad RIP value.
    [  833.215629] RIP  [<          (null)>]           (null)
    [  833.215629]  RSP <ffff8800119c9c50>
    [  833.215629] CR2: 0000000000000000
    [  833.238525] ---[ end trace ec00758b8d44f529 ]---
    
    When walking down the path on the server, it's possible to hit a
    symlink. The path walking code assumes that the caller will handle that
    situation properly, but cifs_get_root() isn't set up for it. This patch
    prevents the oops by simply returning an error.
    
    A better solution would be to try and chase the symlinks here, but that's
    fairly complicated to handle.
    
    Fixes:
    
        https://bugzilla.kernel.org/show_bug.cgi?id=53221
    
    Reported-and-tested-by: Kjell Braden <afflux@pentabarf.de>
    Signed-off-by: Jeff Layton <jlayton@redhat.com>
    Signed-off-by: Steve French <sfrench@us.ibm.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit b2650cd39a40cae1c26ebc81f3a0e319e3a587a3
Author: Avinash Patil <patila@marvell.com>
Date:   Mon Feb 25 16:01:34 2013 -0800

    mwifiex: correct sleep delay counter
    
    commit 3e7a4ff7c5b6423ddb644df9c41b8b6d2fb79d30 upstream.
    
    Maximum delay for waking up card is 50 ms. Because of typo in
    counter, this delay goes to 500ms. This patch fixes the bug.
    
    Signed-off-by: Avinash Patil <patila@marvell.com>
    Signed-off-by: Amitkumar Karwar <akarwar@marvell.com>
    Signed-off-by: Yogesh Ashok Powar <yogeshp@marvell.com>
    Signed-off-by: Bing Zhao <bzhao@marvell.com>
    Signed-off-by: John W. Linville <linville@tuxdriver.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit deca5de87684d4cc84302dc4460c980ed44ac7a0
Author: Felix Fietkau <nbd@openwrt.org>
Date:   Fri Feb 22 21:37:25 2013 +0100

    ath9k_htc: fix signal strength handling issues
    
    commit 838f427955dcfd16858b0108ce29029da0d56a4e upstream.
    
    The ath9k commit 2ef167557c0a26c88162ecffb017bfcc51eb7b29
    (ath9k: fix signal strength reporting issues) fixed an issue where the
    reported per-frame signal strength reported to mac80211 was being
    overwritten with an internal average. The same issue is also present
    in ath9k_htc.
    In addition to preventing the driver from overwriting the value, this
    commit also ensures that the internal average (which is used for ANI)
    only tracks beacons of the AP that we're connected to.
    
    Signed-off-by: Felix Fietkau <nbd@openwrt.org>
    Signed-off-by: John W. Linville <linville@tuxdriver.com>
    [bwh: Backported to 3.2: use compare_ether_addr() instead of
     ether_addr_equal(), with opposite sense]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit ccf970969a60c1fcc399ef492e05805243746354
Author: Felix Fietkau <nbd@openwrt.org>
Date:   Fri Feb 22 21:09:17 2013 +0100

    ath9k: fix RSSI dummy marker value
    
    commit a3d63cadbad97671d740a9698acc2c95d1ca6e79 upstream.
    
    RSSI is being stored internally as s8 in several places. The indication
    of an unset RSSI value, ATH_RSSI_DUMMY_MARKER, was supposed to have been
    set to 127, but ended up being set to 0x127 because of a code cleanup
    mistake. This could lead to invalid signal strength values in a few
    places.
    
    Signed-off-by: Felix Fietkau <nbd@openwrt.org>
    Signed-off-by: John W. Linville <linville@tuxdriver.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 7c4bf08d3fa22613b628fc967953f581564a13ad
Author: Kees Cook <keescook@chromium.org>
Date:   Mon Feb 25 21:32:25 2013 +0000

    proc connector: reject unprivileged listener bumps
    
    commit e70ab977991964a5a7ad1182799451d067e62669 upstream.
    
    While PROC_CN_MCAST_LISTEN/IGNORE is entirely advisory, it was possible
    for an unprivileged user to turn off notifications for all listeners by
    sending PROC_CN_MCAST_IGNORE. Instead, require the same privileges as
    required for a multicast bind.
    
    Signed-off-by: Kees Cook <keescook@chromium.org>
    Cc: Evgeniy Polyakov <zbr@ioremap.net>
    Cc: Matt Helsley <matthltc@us.ibm.com>
    Acked-by: Evgeniy Polyakov <zbr@ioremap.net>
    Acked-by: Matt Helsley <matthltc@us.ibm.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.2: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit ab94b06b25d7678af3dcbb20b46349822607e0ad
Author: NeilBrown <neilb@suse.de>
Date:   Thu Feb 21 15:36:38 2013 +1100

    md: raid0: fix error return from create_stripe_zones.
    
    commit 58ebb34c49fcfcaa029e4b1c1453d92583900f9a upstream.
    
    Create_stripe_zones returns an error slightly differently to
    raid0_run and to raid0_takeover_*.
    
    The error returned used by the second was wrong and an error would
    result in mddev->private being set to NULL and sooner or later a
    crash.
    
    So never return NULL, return ERR_PTR(err), not NULL from
    create_stripe_zones.
    
    This bug has been present since 2.6.35 so the fix is suitable
    for any kernel since then.
    
    Signed-off-by: NeilBrown <neilb@suse.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 84453f1a9d27a3a9be88269cc14ee9099856f268
Author: NeilBrown <neilb@suse.de>
Date:   Thu Feb 21 14:33:17 2013 +1100

    md: fix two bugs when attempting to resize RAID0 array.
    
    commit a64685399181780998281fe07309a94b25dd24c3 upstream.
    
    You cannot resize a RAID0 array (in terms of making the devices
    bigger), but the code doesn't entirely stop you.
    So:
    
     disable setting of the available size on each device for
     RAID0 and Linear devices.  This must not change as doing so
     can change the effective layout of data.
    
     Make sure that the size that raid0_size() reports is accurate,
     but rounding devices sizes to chunk sizes.  As the device sizes
     cannot change now, this isn't so important, but it is best to be
     safe.
    
    Without this change:
      mdadm --grow /dev/md0 -z max
      mdadm --grow /dev/md0 -Z max
      then read to the end of the array
    
    can cause a BUG in a RAID0 array.
    
    These bugs have been present ever since it became possible
    to resize any device, which is a long time.  So the fix is
    suitable for any -stable kerenl.
    
    Signed-off-by: NeilBrown <neilb@suse.de>
    [bwh: Backported to 3.2: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit b923f0d70914a257e4545ede4155f9889acc653b
Author: Russell King <rmk+kernel@arm.linux.org.uk>
Date:   Mon Feb 25 16:10:42 2013 +0000

    ARM: fix scheduling while atomic warning in alignment handling code
    
    commit b255188f90e2bade1bd11a986dd1ca4861869f4d upstream.
    
    Paolo Pisati reports that IPv6 triggers this warning:
    
    BUG: scheduling while atomic: swapper/0/0/0x40000100
    Modules linked in:
    [<c001b1c4>] (unwind_backtrace+0x0/0xf0) from [<c0503c5c>] (__schedule_bug+0x48/0x5c)
    [<c0503c5c>] (__schedule_bug+0x48/0x5c) from [<c0508608>] (__schedule+0x700/0x740)
    [<c0508608>] (__schedule+0x700/0x740) from [<c007007c>] (__cond_resched+0x24/0x34)
    [<c007007c>] (__cond_resched+0x24/0x34) from [<c05086dc>] (_cond_resched+0x3c/0x44)
    [<c05086dc>] (_cond_resched+0x3c/0x44) from [<c0021f6c>] (do_alignment+0x178/0x78c)
    [<c0021f6c>] (do_alignment+0x178/0x78c) from [<c00083e0>] (do_DataAbort+0x34/0x98)
    [<c00083e0>] (do_DataAbort+0x34/0x98) from [<c0509a60>] (__dabt_svc+0x40/0x60)
    Exception stack(0xc0763d70 to 0xc0763db8)
    3d60:                                     e97e805e e97e806e 2c000000 11000000
    3d80: ea86bb00 0000002c 00000011 e97e807e c076d2a8 e97e805e e97e806e 0000002c
    3da0: 3d000000 c0763dbc c04b98fc c02a8490 00000113 ffffffff
    [<c0509a60>] (__dabt_svc+0x40/0x60) from [<c02a8490>] (__csum_ipv6_magic+0x8/0xc8)
    
    Fix this by using probe_kernel_address() stead of __get_user().
    
    Reported-by: Paolo Pisati <p.pisati@gmail.com>
    Tested-by: Paolo Pisati <p.pisati@gmail.com>
    Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit e1f3c390ec420adcd0e0b5723eba6c1c447a2d42
Author: Russell King <rmk+kernel@arm.linux.org.uk>
Date:   Mon Feb 25 16:09:12 2013 +0000

    ARM: VFP: fix emulation of second VFP instruction
    
    commit 5e4ba617c1b584b2e376f31a63bd4e734109318a upstream.
    
    Martin Storsjö reports that the sequence:
    
            ee312ac1        vsub.f32        s4, s3, s2
            ee702ac0        vsub.f32        s5, s1, s0
            e59f0028        ldr             r0, [pc, #40]
            ee111a90        vmov            r1, s3
    
    on Raspberry Pi (implementor 41 architecture 1 part 20 variant b rev 5)
    where s3 is a denormal and s2 is zero results in incorrect behaviour -
    the instruction "vsub.f32 s5, s1, s0" is not executed:
    
            VFP: bounce: trigger ee111a90 fpexc d0000780
            VFP: emulate: INST=0xee312ac1 SCR=0x00000000
            ...
    
    As we can see, the instruction triggering the exception is the "vmov"
    instruction, and we emulate the "vsub.f32 s4, s3, s2" but fail to
    properly take account of the FPEXC_FP2V flag in FPEXC.  This is because
    the test for the second instruction register being valid is bogus, and
    will always skip emulation of the second instruction.
    
    Reported-by: Martin Storsjö <martin@martin.st>
    Tested-by: Martin Storsjö <martin@martin.st>
    Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit ae651768e63cb9007aadf9c807ff9d8e3daedf8d
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Mon Feb 11 22:03:18 2013 +0300

    dc395x: uninitialized variable in device_alloc()
    
    commit 208afec4f3be8c51ad6eebe6611dd6d2ad2fa298 upstream.
    
    This bug was introduced back in bitkeeper days in 2003.  We use
    "dcb->dev_mode" before it has been initialized.
    
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Acked-by: Oliver Neukum <oliver@neukum.org>
    Signed-off-by: James Bottomley <JBottomley@Parallels.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 4dd30e2ee429fe6b53ccd2693282bc3faa12c6dc
Author: K. Y. Srinivasan <kys@microsoft.com>
Date:   Wed Feb 6 05:15:28 2013 -0800

    storvsc: Initialize the sglist
    
    commit 9d2696e658ef4f209955ddaa987d43f1a1bd81a1 upstream.
    
    Properly initialize scatterlist before using it.
    
    Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
    Signed-off-by: James Bottomley <JBottomley@Parallels.com>
    [bwh: Backported to 3.2: adjust filename]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 8c5e63a26e6b92c4cb171273beadc02a989f4939
Author: Trond Myklebust <Trond.Myklebust@netapp.com>
Date:   Fri Feb 22 14:57:57 2013 -0500

    SUNRPC: Don't start the retransmission timer when out of socket space
    
    commit a9a6b52ee1baa865283a91eb8d443ee91adfca56 upstream.
    
    If the socket is full, we're better off just waiting until it empties,
    or until the connection is broken. The reason why we generally don't
    want to time out is that the call to xprt->ops->release_xprt() will
    trigger a connection reset, which isn't helpful...
    
    Let's make an exception for soft RPC calls, since they have to provide
    timeout guarantees.
    
    Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit b42d5faf4e168d24b85c2c3f59f8d0ee4385dfa1
Author: Trond Myklebust <Trond.Myklebust@netapp.com>
Date:   Fri Feb 22 12:53:43 2013 -0500

    NFS: Don't allow NFS silly-renamed files to be deleted, no signal
    
    commit 5a7a613a47a715711b3f2d3322a0eac21d459166 upstream.
    
    Commit 73ca100 broke the code that prevents the client from deleting
    a silly renamed dentry.  This affected "delete on last close"
    semantics as after that commit, nothing prevented removal of
    silly-renamed files.  As a result, a process holding a file open
    could easily get an ESTALE on the file in a directory where some
    other process issued 'rm -rf some_dir_containing_the_file' twice.
    Before the commit, any attempt at unlinking silly renamed files would
    fail inside may_delete() with -EBUSY because of the
    DCACHE_NFSFS_RENAMED flag.  The following testcase demonstrates
    the problem:
      tail -f /nfsmnt/dir/file &
      rm -rf /nfsmnt/dir
      rm -rf /nfsmnt/dir
      # second removal does not fail, 'tail' process receives ESTALE
    
    The problem with the above commit is that it unhashes the old and
    new dentries from the lookup path, even in the normal case when
    a signal is not encountered and it would have been safe to call
    d_move.  Unfortunately the old dentry has the special
    DCACHE_NFSFS_RENAMED flag set on it.  Unhashing has the
    side-effect that future lookups call d_alloc(), allocating a new
    dentry without the special flag for any silly-renamed files.  As a
    result, subsequent calls to unlink silly renamed files do not fail
    but allow the removal to go through.  This will result in ESTALE
    errors for any other process doing operations on the file.
    
    To fix this, go back to using d_move on success.
    For the signal case, it's unclear what we may safely do beyond d_drop.
    
    Reported-by: Dave Wysochanski <dwysocha@redhat.com>
    Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
    Acked-by: Jeff Layton <jlayton@redhat.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit ff891f9e86ca1e125b3d07c78413a4c1dbb6ca8a
Author: Sebastian Riemer <sebastian.riemer@profitbricks.com>
Date:   Thu Feb 21 13:28:09 2013 +1100

    md: protect against crash upon fsync on ro array
    
    commit bbfa57c0f2243a7c31fd248d22e9861a2802cad5 upstream.
    
    If an fsync occurs on a read-only array, we need to send a
    completion for the IO and may not increment the active IO count.
    Otherwise, we hit a bug trace and can't stop the MD array anymore.
    
    By advice of Christoph Hellwig we return success upon a flush
    request but we return -EROFS for other writes.
    We detect flush requests by checking if the bio has zero sectors.
    
    This patch is suitable to any -stable kernel to which it applies.
    
    Cc: Christoph Hellwig <hch@infradead.org>
    Cc: Ben Hutchings <ben@decadent.org.uk>
    Cc: NeilBrown <neilb@suse.de>
    Signed-off-by: Sebastian Riemer <sebastian.riemer@profitbricks.com>
    Reported-by: Ben Hutchings <ben@decadent.org.uk>
    Acked-by: Paul Menzel <paulepanter@users.sourceforge.net>
    Signed-off-by: NeilBrown <neilb@suse.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 554995ab65f98584d95e06e4d44f0c4d3293cee7
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Wed Feb 20 14:06:20 2013 -0500

    btrfs: Init io_lock after cloning btrfs device struct
    
    commit 1cba0cdf5e4dbcd9e5fa5b54d7a028e55e2ca057 upstream.
    
    __btrfs_close_devices() clones btrfs device structs with
    memcpy(). Some of the fields in the clone are reinitialized, but it's
    missing to init io_lock. In mainline this goes unnoticed, but on RT it
    leaves the plist pointing to the original about to be freed lock
    struct.
    
    Initialize io_lock after cloning, so no references to the original
    struct are left.
    
    Reported-and-tested-by: Mike Galbraith <efault@gmx.de>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Chris Mason <chris.mason@fusionio.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit b9d85cc001a1ff099d4870dd36b474e522d543c5
Author: Ben Hutchings <ben@decadent.org.uk>
Date:   Thu Mar 14 00:15:05 2013 +0000

    Revert "powerpc/eeh: Fix crash when adding a device in a slot with DDW"
    
    This reverts commit 066f289835f09a3f744d6bac96f25e25d20b3ded which was
    6a040ce72598159a74969a2d01ab0ba5ee6536b3 upstream.
    
    This was not needed and is not suitable for 3.2.y.
    
    Reported-by: Michael Neuling <mikey@neuling.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>