--- /dev/null
+From b3dc1a212e5167984616445990c76056034f8eeb Mon Sep 17 00:00:00 2001
+From: Tomas Henzl <thenzl@redhat.com>
+Date: Thu, 11 Feb 2010 18:01:50 +0100
+Subject: [SCSI] megaraid_sas: fix for 32bit apps
+
+From: Tomas Henzl <thenzl@redhat.com>
+
+commit b3dc1a212e5167984616445990c76056034f8eeb upstream.
+
+It looks like this patch -
+
+commit 7b2519afa1abd1b9f63aa1e90879307842422dae
+Author: Yang, Bo <Bo.Yang@lsi.com>
+Date: Tue Oct 6 14:52:20 2009 -0600
+
+ [SCSI] megaraid_sas: fix 64 bit sense pointer truncation
+
+has caused a problem for 32bit programs with 64bit os -
+
+http://bugzilla.kernel.org/show_bug.cgi?id=15001
+
+fix by converting the user space 32bit pointer to a 64 bit one when
+needed.
+
+[jejb: fix up some 64 bit warnings]
+Signed-off-by: Tomas Henzl <thenzl@redhat.com>
+Cc: Bo Yang <Bo.Yang@lsi.com>
+Signed-off-by: James Bottomley <James.Bottomley@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/scsi/megaraid/megaraid_sas.c | 18 ++++++++++++++++--
+ 1 file changed, 16 insertions(+), 2 deletions(-)
+
+--- a/drivers/scsi/megaraid/megaraid_sas.c
++++ b/drivers/scsi/megaraid/megaraid_sas.c
+@@ -3292,6 +3292,7 @@ static int megasas_mgmt_compat_ioctl_fw(
+ compat_alloc_user_space(sizeof(struct megasas_iocpacket));
+ int i;
+ int error = 0;
++ compat_uptr_t ptr;
+
+ if (clear_user(ioc, sizeof(*ioc)))
+ return -EFAULT;
+@@ -3304,9 +3305,22 @@ static int megasas_mgmt_compat_ioctl_fw(
+ copy_in_user(&ioc->sge_count, &cioc->sge_count, sizeof(u32)))
+ return -EFAULT;
+
+- for (i = 0; i < MAX_IOCTL_SGE; i++) {
+- compat_uptr_t ptr;
++ /*
++ * The sense_ptr is used in megasas_mgmt_fw_ioctl only when
++ * sense_len is not null, so prepare the 64bit value under
++ * the same condition.
++ */
++ if (ioc->sense_len) {
++ void __user **sense_ioc_ptr =
++ (void __user **)(ioc->frame.raw + ioc->sense_off);
++ compat_uptr_t *sense_cioc_ptr =
++ (compat_uptr_t *)(cioc->frame.raw + cioc->sense_off);
++ if (get_user(ptr, sense_cioc_ptr) ||
++ put_user(compat_ptr(ptr), sense_ioc_ptr))
++ return -EFAULT;
++ }
+
++ for (i = 0; i < MAX_IOCTL_SGE; i++) {
+ if (get_user(ptr, &cioc->sgl[i].iov_base) ||
+ put_user(compat_ptr(ptr), &ioc->sgl[i].iov_base) ||
+ copy_in_user(&ioc->sgl[i].iov_len,
vfs-add-no_nrwrite_index_update-writeback-control-flag.patch
ext4-fix-file-fragmentation-during-large-file-write.patch
ext4-implement-range_cyclic-in-ext4_da_writepages-instead-of-write_cache_pages.patch
+tty-release_one_tty-forgets-to-put-pids.patch
+megaraid_sas-fix-for-32bit-apps.patch
+trace-fix-inappropriate-substraction-on-tracing_pages_allocated-in-trace_free_page.patch
--- /dev/null
+From crosslonelyover@gmail.com Wed Apr 21 12:08:05 2010
+From: Wang Sheng-Hui <crosslonelyover@gmail.com>
+Date: Tue, 13 Apr 2010 21:04:10 +0800
+Subject: trace: Fix inappropriate substraction on tracing_pages_allocated in trace_free_page()
+To: Greg KH <greg@kroah.com>
+Cc: stable@kernel.org
+Message-ID: <i2g5a774f4c1004130604vbd24fc79y911d34408ff7e6f0@mail.gmail.com>
+
+From: Wang Sheng-Hui <crosslonelyover@gmail.com>
+
+[No matching upstream git commit id as it was fixed differently due to a
+rewrite of the tracing code there.]
+
+For normal case, the code in trace_free_page() do once more substraction
+on tracing_pages_allocated, but for CONFIG_TRACER_MAX_TRACE it doesn't
+take the freed page into account. That's not consistent with
+trace_alloc_page(). Well, for there are no message related with this,
+so we cannot observe its incorrect state when the kernel doesn't define
+"CONFIG_TRACER_MAX_TRACE". If you add some pr_info() as
+trace_alloc_page(), you may notice it.
+
+Cc: Steven Rostedt <rostedt@goodmis.org>
+Cc: Frederic Weisbecker <fweisbec@gmail.com>
+Cc: Ingo Molnar <mingo@redhat.com>
+Cc: Li Zefan <lizf@cn.fujitsu.com>
+Signed-off-by: Wang Sheng-Hui <crosslonelyover@gmail.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ kernel/trace/trace.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/kernel/trace/trace.c
++++ b/kernel/trace/trace.c
+@@ -3018,7 +3018,6 @@ static int trace_free_page(void)
+ ClearPageLRU(page);
+ list_del(&page->lru);
+ tracing_pages_allocated--;
+- tracing_pages_allocated--;
+ __free_page(page);
+
+ tracing_reset(data);
+@@ -3036,6 +3035,7 @@ static int trace_free_page(void)
+ page = list_entry(p, struct page, lru);
+ ClearPageLRU(page);
+ list_del(&page->lru);
++ tracing_pages_allocated--;
+ __free_page(page);
+
+ tracing_reset(data);
--- /dev/null
+From 6da8d866d0d39e9509ff826660f6a86a6757c966 Mon Sep 17 00:00:00 2001
+From: Oleg Nesterov <oleg@redhat.com>
+Date: Fri, 2 Apr 2010 18:05:12 +0200
+Subject: tty: release_one_tty() forgets to put pids
+
+From: Oleg Nesterov <oleg@redhat.com>
+
+commit 6da8d866d0d39e9509ff826660f6a86a6757c966 upstream.
+
+release_one_tty(tty) can be called when tty still has a reference
+to pgrp/session. In this case we leak the pid.
+
+Signed-off-by: Oleg Nesterov <oleg@redhat.com>
+Reported-by: Catalin Marinas <catalin.marinas@arm.com>
+Reported-and-tested-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
+Acked-by: Linus Torvalds <torvalds@linux-foundation.org>
+Acked-by: Eric W. Biederman <ebiederm@xmission.com>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/char/tty_io.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+--- a/drivers/char/tty_io.c
++++ b/drivers/char/tty_io.c
+@@ -1893,6 +1893,8 @@ static void release_one_tty(struct tty_s
+ list_del_init(&tty->tty_files);
+ file_list_unlock();
+
++ put_pid(tty->pgrp);
++ put_pid(tty->session);
+ free_tty_struct(tty);
+ }
+