]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
.27 patches
authorGreg Kroah-Hartman <gregkh@suse.de>
Wed, 21 Apr 2010 19:20:22 +0000 (12:20 -0700)
committerGreg Kroah-Hartman <gregkh@suse.de>
Wed, 21 Apr 2010 19:20:22 +0000 (12:20 -0700)
queue-2.6.27/megaraid_sas-fix-for-32bit-apps.patch [new file with mode: 0644]
queue-2.6.27/series
queue-2.6.27/trace-fix-inappropriate-substraction-on-tracing_pages_allocated-in-trace_free_page.patch [new file with mode: 0644]
queue-2.6.27/tty-release_one_tty-forgets-to-put-pids.patch [new file with mode: 0644]

diff --git a/queue-2.6.27/megaraid_sas-fix-for-32bit-apps.patch b/queue-2.6.27/megaraid_sas-fix-for-32bit-apps.patch
new file mode 100644 (file)
index 0000000..dd7d488
--- /dev/null
@@ -0,0 +1,69 @@
+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,
index 3041f8329e3608a94a193aeaff1615a1dc73817b..a9d781d2cb361654cfffc0685a8ae7e8100bb80b 100644 (file)
@@ -10,3 +10,6 @@ vfs-remove-the-range_cont-writeback-mode.patch
 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
diff --git a/queue-2.6.27/trace-fix-inappropriate-substraction-on-tracing_pages_allocated-in-trace_free_page.patch b/queue-2.6.27/trace-fix-inappropriate-substraction-on-tracing_pages_allocated-in-trace_free_page.patch
new file mode 100644 (file)
index 0000000..60f4c4e
--- /dev/null
@@ -0,0 +1,50 @@
+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);
diff --git a/queue-2.6.27/tty-release_one_tty-forgets-to-put-pids.patch b/queue-2.6.27/tty-release_one_tty-forgets-to-put-pids.patch
new file mode 100644 (file)
index 0000000..7f07432
--- /dev/null
@@ -0,0 +1,35 @@
+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);
+ }