From: Greg Kroah-Hartman Date: Wed, 21 Apr 2010 19:20:22 +0000 (-0700) Subject: .27 patches X-Git-Tag: v2.6.32.12~22 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=cdd4c7bba2f6acde4e940f40e34750893fd64453;p=thirdparty%2Fkernel%2Fstable-queue.git .27 patches --- 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 index 00000000000..dd7d488ece9 --- /dev/null +++ b/queue-2.6.27/megaraid_sas-fix-for-32bit-apps.patch @@ -0,0 +1,69 @@ +From b3dc1a212e5167984616445990c76056034f8eeb Mon Sep 17 00:00:00 2001 +From: Tomas Henzl +Date: Thu, 11 Feb 2010 18:01:50 +0100 +Subject: [SCSI] megaraid_sas: fix for 32bit apps + +From: Tomas Henzl + +commit b3dc1a212e5167984616445990c76056034f8eeb upstream. + +It looks like this patch - + +commit 7b2519afa1abd1b9f63aa1e90879307842422dae +Author: Yang, Bo +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 +Cc: Bo Yang +Signed-off-by: James Bottomley +Signed-off-by: Greg Kroah-Hartman + +--- + 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, diff --git a/queue-2.6.27/series b/queue-2.6.27/series index 3041f8329e3..a9d781d2cb3 100644 --- a/queue-2.6.27/series +++ b/queue-2.6.27/series @@ -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 index 00000000000..60f4c4ec9b9 --- /dev/null +++ b/queue-2.6.27/trace-fix-inappropriate-substraction-on-tracing_pages_allocated-in-trace_free_page.patch @@ -0,0 +1,50 @@ +From crosslonelyover@gmail.com Wed Apr 21 12:08:05 2010 +From: Wang Sheng-Hui +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 +Cc: stable@kernel.org +Message-ID: + +From: Wang Sheng-Hui + +[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 +Cc: Frederic Weisbecker +Cc: Ingo Molnar +Cc: Li Zefan +Signed-off-by: Wang Sheng-Hui +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..7f074329bb9 --- /dev/null +++ b/queue-2.6.27/tty-release_one_tty-forgets-to-put-pids.patch @@ -0,0 +1,35 @@ +From 6da8d866d0d39e9509ff826660f6a86a6757c966 Mon Sep 17 00:00:00 2001 +From: Oleg Nesterov +Date: Fri, 2 Apr 2010 18:05:12 +0200 +Subject: tty: release_one_tty() forgets to put pids + +From: Oleg Nesterov + +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 +Reported-by: Catalin Marinas +Reported-and-tested-by: Tetsuo Handa +Acked-by: Linus Torvalds +Acked-by: Eric W. Biederman +Signed-off-by: Linus Torvalds +Signed-off-by: Greg Kroah-Hartman + +--- + 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); + } +