--- /dev/null
+From 8da00edc1069f01c34510fa405dc15d96c090a3f Mon Sep 17 00:00:00 2001
+From: Masanari Iida <standby24x7@gmail.com>
+Date: Wed, 28 Mar 2012 14:42:56 -0700
+Subject: backlight: fix typo in tosa_lcd.c
+
+From: Masanari Iida <standby24x7@gmail.com>
+
+commit 8da00edc1069f01c34510fa405dc15d96c090a3f upstream.
+
+Fix typo in drivers/video/backlight/tosa_lcd.c
+"tosa_lcd_reume" should be "tosa_lcd_resume".
+
+Signed-off-by: Masanari Iida <standby24x7@gmail.com>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/video/backlight/tosa_lcd.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/video/backlight/tosa_lcd.c
++++ b/drivers/video/backlight/tosa_lcd.c
+@@ -271,7 +271,7 @@ static int tosa_lcd_resume(struct spi_de
+ }
+ #else
+ #define tosa_lcd_suspend NULL
+-#define tosa_lcd_reume NULL
++#define tosa_lcd_resume NULL
+ #endif
+
+ static struct spi_driver tosa_lcd_driver = {
--- /dev/null
+From fa0fb93f2ac308a76fa64eb57c18511dadf97089 Mon Sep 17 00:00:00 2001
+From: Bing Zhao <bzhao@marvell.com>
+Date: Tue, 20 Dec 2011 18:19:00 -0800
+Subject: Bluetooth: btusb: fix bInterval for high/super speed isochronous endpoints
+
+From: Bing Zhao <bzhao@marvell.com>
+
+commit fa0fb93f2ac308a76fa64eb57c18511dadf97089 upstream.
+
+For high-speed/super-speed isochronous endpoints, the bInterval
+value is used as exponent, 2^(bInterval-1). Luckily we have
+usb_fill_int_urb() function that handles it correctly. So we just
+call this function to fill in the RX URB.
+
+Cc: Marcel Holtmann <marcel@holtmann.org>
+Signed-off-by: Bing Zhao <bzhao@marvell.com>
+Acked-by: Marcel Holtmann <marcel@holtmann.org>
+Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/bluetooth/btusb.c | 9 ++-------
+ 1 file changed, 2 insertions(+), 7 deletions(-)
+
+--- a/drivers/bluetooth/btusb.c
++++ b/drivers/bluetooth/btusb.c
+@@ -498,15 +498,10 @@ static int btusb_submit_isoc_urb(struct
+
+ pipe = usb_rcvisocpipe(data->udev, data->isoc_rx_ep->bEndpointAddress);
+
+- urb->dev = data->udev;
+- urb->pipe = pipe;
+- urb->context = hdev;
+- urb->complete = btusb_isoc_complete;
+- urb->interval = data->isoc_rx_ep->bInterval;
++ usb_fill_int_urb(urb, data->udev, pipe, buf, size, btusb_isoc_complete,
++ hdev, data->isoc_rx_ep->bInterval);
+
+ urb->transfer_flags = URB_FREE_BUFFER | URB_ISO_ASAP;
+- urb->transfer_buffer = buf;
+- urb->transfer_buffer_length = size;
+
+ __fill_isoc_descriptor(urb, size,
+ le16_to_cpu(data->isoc_rx_ep->wMaxPacketSize));
--- /dev/null
+From f946eeb9313ff1470758e171a60fe7438a2ded3f Mon Sep 17 00:00:00 2001
+From: Sasha Levin <levinsasha928@gmail.com>
+Date: Mon, 30 Jan 2012 23:07:22 -0500
+Subject: module: Remove module size limit
+
+From: Sasha Levin <levinsasha928@gmail.com>
+
+commit f946eeb9313ff1470758e171a60fe7438a2ded3f upstream.
+
+Module size was limited to 64MB, this was legacy limitation due to vmalloc()
+which was removed a while ago.
+
+Limiting module size to 64MB is both pointless and affects real world use
+cases.
+
+Cc: Tim Abbott <tim.abbott@oracle.com>
+Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
+Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ kernel/module.c | 3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+--- a/kernel/module.c
++++ b/kernel/module.c
+@@ -2290,8 +2290,7 @@ static int copy_and_check(struct load_in
+ return -ENOEXEC;
+
+ /* Suck in entire file: we'll want most of it. */
+- /* vmalloc barfs on "unusual" numbers. Check here */
+- if (len > 64 * 1024 * 1024 || (hdr = vmalloc(len)) == NULL)
++ if ((hdr = vmalloc(len)) == NULL)
+ return -ENOMEM;
+
+ if (copy_from_user(hdr, umod, len) != 0) {
dm-crypt-fix-mempool-deadlock.patch
dm-crypt-add-missing-error-handling.patch
dm-exception-store-fix-init-error-path.patch
+backlight-fix-typo-in-tosa_lcd.c.patch
+xfs-fix-oops-on-io-error-during-xlog_recover_process_iunlinks.patch
+slub-do-not-hold-slub_lock-when-calling-sysfs_slab_add.patch
+module-remove-module-size-limit.patch
+bluetooth-btusb-fix-binterval-for-high-super-speed-isochronous-endpoints.patch
--- /dev/null
+From 66c4c35c6bc5a1a452b024cf0364635b28fd94e4 Mon Sep 17 00:00:00 2001
+From: Christoph Lameter <cl@linux.com>
+Date: Tue, 17 Jan 2012 09:27:31 -0600
+Subject: slub: Do not hold slub_lock when calling sysfs_slab_add()
+
+From: Christoph Lameter <cl@linux.com>
+
+commit 66c4c35c6bc5a1a452b024cf0364635b28fd94e4 upstream.
+
+sysfs_slab_add() calls various sysfs functions that actually may
+end up in userspace doing all sorts of things.
+
+Release the slub_lock after adding the kmem_cache structure to the list.
+At that point the address of the kmem_cache is not known so we are
+guaranteed exlusive access to the following modifications to the
+kmem_cache structure.
+
+If the sysfs_slab_add fails then reacquire the slub_lock to
+remove the kmem_cache structure from the list.
+
+Reported-by: Sasha Levin <levinsasha928@gmail.com>
+Acked-by: Eric Dumazet <eric.dumazet@gmail.com>
+Signed-off-by: Christoph Lameter <cl@linux.com>
+Signed-off-by: Pekka Enberg <penberg@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ mm/slub.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- a/mm/slub.c
++++ b/mm/slub.c
+@@ -3439,13 +3439,14 @@ struct kmem_cache *kmem_cache_create(con
+ if (kmem_cache_open(s, n,
+ size, align, flags, ctor)) {
+ list_add(&s->list, &slab_caches);
++ up_write(&slub_lock);
+ if (sysfs_slab_add(s)) {
++ down_write(&slub_lock);
+ list_del(&s->list);
+ kfree(n);
+ kfree(s);
+ goto err;
+ }
+- up_write(&slub_lock);
+ return s;
+ }
+ kfree(n);
--- /dev/null
+From d97d32edcd732110758799ae60af725e5110b3dc Mon Sep 17 00:00:00 2001
+From: Jan Kara <jack@suse.cz>
+Date: Thu, 15 Mar 2012 09:34:02 +0000
+Subject: xfs: Fix oops on IO error during xlog_recover_process_iunlinks()
+
+From: Jan Kara <jack@suse.cz>
+
+commit d97d32edcd732110758799ae60af725e5110b3dc upstream.
+
+When an IO error happens during inode deletion run from
+xlog_recover_process_iunlinks() filesystem gets shutdown. Thus any subsequent
+attempt to read buffers fails. Code in xlog_recover_process_iunlinks() does not
+count with the fact that read of a buffer which was read a while ago can
+really fail which results in the oops on
+ agi = XFS_BUF_TO_AGI(agibp);
+
+Fix the problem by cleaning up the buffer handling in
+xlog_recover_process_iunlinks() as suggested by Dave Chinner. We release buffer
+lock but keep buffer reference to AG buffer. That is enough for buffer to stay
+pinned in memory and we don't have to call xfs_read_agi() all the time.
+
+Signed-off-by: Jan Kara <jack@suse.cz>
+Reviewed-by: Dave Chinner <dchinner@redhat.com>
+Signed-off-by: Ben Myers <bpm@sgi.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ fs/xfs/xfs_log_recover.c | 33 +++++++++++----------------------
+ 1 file changed, 11 insertions(+), 22 deletions(-)
+
+--- a/fs/xfs/xfs_log_recover.c
++++ b/fs/xfs/xfs_log_recover.c
+@@ -3159,37 +3159,26 @@ xlog_recover_process_iunlinks(
+ */
+ continue;
+ }
++ /*
++ * Unlock the buffer so that it can be acquired in the normal
++ * course of the transaction to truncate and free each inode.
++ * Because we are not racing with anyone else here for the AGI
++ * buffer, we don't even need to hold it locked to read the
++ * initial unlinked bucket entries out of the buffer. We keep
++ * buffer reference though, so that it stays pinned in memory
++ * while we need the buffer.
++ */
+ agi = XFS_BUF_TO_AGI(agibp);
++ xfs_buf_unlock(agibp);
+
+ for (bucket = 0; bucket < XFS_AGI_UNLINKED_BUCKETS; bucket++) {
+ agino = be32_to_cpu(agi->agi_unlinked[bucket]);
+ while (agino != NULLAGINO) {
+- /*
+- * Release the agi buffer so that it can
+- * be acquired in the normal course of the
+- * transaction to truncate and free the inode.
+- */
+- xfs_buf_relse(agibp);
+-
+ agino = xlog_recover_process_one_iunlink(mp,
+ agno, agino, bucket);
+-
+- /*
+- * Reacquire the agibuffer and continue around
+- * the loop. This should never fail as we know
+- * the buffer was good earlier on.
+- */
+- error = xfs_read_agi(mp, NULL, agno, &agibp);
+- ASSERT(error == 0);
+- agi = XFS_BUF_TO_AGI(agibp);
+ }
+ }
+-
+- /*
+- * Release the buffer for the current agi so we can
+- * go on to the next one.
+- */
+- xfs_buf_relse(agibp);
++ xfs_buf_rele(agibp);
+ }
+
+ mp->m_dmevmask = mp_dmevmask;