--- /dev/null
+From gregkh@mini.kroah.org Mon Jun 23 16:00:38 2008
+Message-Id: <20080623225737.837265824@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Mon, 23 Jun 2008 15:57:37 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk
+Subject: [patch 00/10] 2.6.28.9-rc2 review
+Content-Length: 956
+Lines: 28
+
+As -rc1 had a number of issues, here's the set of patches for -rc2.
+
+Responses should be made by Tuesday, June 24, 18:00:00 UTC. Anything
+received after that time might be too late.
+
+The whole patch series can be found in one patch at:
+ kernel.org/pub/linux/kernel/v2.6/stable-review/patch-2.6.25.9-rc2.gz
+and the diffstat can be found below.
+
+
+thanks,
+
+greg k-h
+
+ Makefile | 2
+ arch/powerpc/kernel/vdso.c | 2
+ arch/x86/kernel/setup_32.c | 10 ++
+ drivers/hwmon/adt7473.c | 3
+ drivers/hwmon/lm85.c | 2
+ drivers/net/atl1/atl1_hw.c | 1
+ drivers/watchdog/hpwdt.c | 154 +++++++++++++++++++++++----------------------
+ include/asm-x86/page_32.h | 3
+ include/linux/bootmem.h | 2
+ mm/bootmem.c | 4 -
+ mm/memory.c | 41 +++++++++--
+ mm/migrate.c | 10 ++
+ net/sctp/socket.c | 4 -
+ 13 files changed, 145 insertions(+), 93 deletions(-)
+
+From gregkh@mini.kroah.org Mon Jun 23 16:00:41 2008
+Message-Id: <20080623230041.416491188@mini.kroah.org>
+References: <20080623225737.837265824@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Mon, 23 Jun 2008 15:57:47 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk
+Subject: [patch 10/10] Fix ZERO_PAGE breakage with vmware
+Content-Disposition: inline; filename=fix-zero_page-breakage-with-vmware.patch
+Status: RO
+Content-Length: 2689
+Lines: 84
+
+
+2.6.25.9-stable review patch. If anyone has any objections, please let
+us know.
+
+Note, I had to merge this patch by hand, can someone verify that I
+didn't mess it up?
+
+------------------
+
+From: Linus Torvalds <torvalds@linux-foundation.org>
+
+commit 672ca28e300c17bf8d792a2a7a8631193e580c74 upstream
+
+Commit 89f5b7da2a6bad2e84670422ab8192382a5aeb9f ("Reinstate ZERO_PAGE
+optimization in 'get_user_pages()' and fix XIP") broke vmware, as
+reported by Jeff Chua:
+
+ "This broke vmware 6.0.4.
+ Jun 22 14:53:03.845: vmx| NOT_IMPLEMENTED
+ /build/mts/release/bora-93057/bora/vmx/main/vmmonPosix.c:774"
+
+and the reason seems to be that there's an old bug in how we handle do
+FOLL_ANON on VM_SHARED areas in get_user_pages(), but since it only
+triggered if the whole page table was missing, nobody had apparently hit
+it before.
+
+The recent changes to 'follow_page()' made the FOLL_ANON logic trigger
+not just for whole missing page tables, but for individual pages as
+well, and exposed this problem.
+
+This fixes it by making the test for when FOLL_ANON is used more
+careful, and also makes the code easier to read and understand by moving
+the logic to a separate inline function.
+
+Reported-and-tested-by: Jeff Chua <jeff.chua.linux@gmail.com>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ mm/memory.c | 24 +++++++++++++++++++++---
+ 1 file changed, 21 insertions(+), 3 deletions(-)
+
+--- a/mm/memory.c
++++ b/mm/memory.c
+@@ -989,6 +989,26 @@ no_page_table:
+ return page;
+ }
+
++/* Can we do the FOLL_ANON optimization? */
++static inline int use_zero_page(struct vm_area_struct *vma)
++{
++ /*
++ * We don't want to optimize FOLL_ANON for make_pages_present()
++ * when it tries to page in a VM_LOCKED region. As to VM_SHARED,
++ * we want to get the page from the page tables to make sure
++ * that we serialize and update with any other user of that
++ * mapping.
++ */
++ if (vma->vm_flags & (VM_LOCKED | VM_SHARED))
++ return 0;
++ /*
++ * And if we have a fault or a nopfn routine, it's not an
++ * anonymous region.
++ */
++ return !vma->vm_ops ||
++ (!vma->vm_ops->fault && !vma->vm_ops->nopfn);
++}
++
+ int get_user_pages(struct task_struct *tsk, struct mm_struct *mm,
+ unsigned long start, int len, int write, int force,
+ struct page **pages, struct vm_area_struct **vmas)
+@@ -1063,9 +1083,7 @@ int get_user_pages(struct task_struct *t
+ foll_flags = FOLL_TOUCH;
+ if (pages)
+ foll_flags |= FOLL_GET;
+- if (!write && !(vma->vm_flags & VM_LOCKED) &&
+- (!vma->vm_ops || (!vma->vm_ops->nopage &&
+- !vma->vm_ops->fault)))
++ if (!write && use_zero_page(vma))
+ foll_flags |= FOLL_ANON;
+
+ do {
+
+--
+
+From gregkh@mini.kroah.org Mon Jun 23 16:00:41 2008
+Message-Id: <20080623230041.154801853@mini.kroah.org>
+References: <20080623225737.837265824@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Mon, 23 Jun 2008 15:57:46 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ "Mark M. Hoffman" <mhoffman@lightlink.com>,
+ "Darrick J. Wong" <djwong@us.ibm.com>,
+ Jean Delvare <khali@linux-fr.org>
+Subject: [patch 09/10] hwmon: (adt7473) Initialize max_duty_at_overheat before use
+Content-Disposition: inline; filename=patch-hwmon-initialize-max_duty_at_overheat-before-use.patch
+Content-Length: 1012
+Lines: 36
+
+2.6.25.9-stable review patch. If anyone has any objections, please let
+us know.
+
+------------------
+From: Jean Delvare <khali@linux-fr.org>
+
+commit ed4ec814e45ae8b1596aea0a29b92f6c3614acaa upstream
+
+data->max_duty_at_overheat is not updated in adt7473_update_device,
+so it might be used before it is initialized (if the user reads from
+sysfs file max_duty_at_crit before writing to it.)
+
+Signed-off-by: Jean Delvare <khali@linux-fr.org>
+Acked-by: Darrick J. Wong <djwong@us.ibm.com>
+Signed-off-by: Mark M. Hoffman <mhoffman@lightlink.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+
+---
+ drivers/hwmon/adt7473.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+--- a/drivers/hwmon/adt7473.c
++++ b/drivers/hwmon/adt7473.c
+@@ -309,6 +309,9 @@ no_sensor_update:
+ ADT7473_REG_PWM_BHVR(i));
+ }
+
++ i = i2c_smbus_read_byte_data(client, ADT7473_REG_CFG4);
++ data->max_duty_at_overheat = !!(i & ADT7473_CFG4_MAX_DUTY_AT_OVT);
++
+ data->limits_last_updated = local_jiffies;
+ data->limits_valid = 1;
+
+
+--
+
+From gregkh@mini.kroah.org Mon Jun 23 16:00:41 2008
+Message-Id: <20080623230040.879451843@mini.kroah.org>
+References: <20080623225737.837265824@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Mon, 23 Jun 2008 15:57:45 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ "Mark M. Hoffman" <mhoffman@lightlink.com>,
+ Jean Delvare <khali@linux-fr.org>
+Subject: [patch 08/10] hwmon: (lm85) Fix function RANGE_TO_REG()
+Content-Disposition: inline; filename=hwmon-fix-function-range_to_reg.patch
+Content-Length: 1163
+Lines: 38
+
+2.6.25.9-stable review patch. If anyone has any objections, please let
+us know.
+
+------------------
+From: Jean Delvare <khali@linux-fr.org>
+
+Function RANGE_TO_REG() is broken. For a requested range of 2000 (2
+degrees C), it will return an index value of 15, i.e. 80.0 degrees C,
+instead of the expected index value of 0. All other values are handled
+properly, just 2000 isn't.
+
+The bug was introduced back in November 2004 by this patch:
+http://git.kernel.org/?p=linux/kernel/git/tglx/history.git;a=commit;h=1c28d80f1992240373099d863e4996cdd5d646d0
+
+In Linus' kernel I decided to rewrite the whole function in a way
+which was more obviously correct. But for -stable let's just do the
+minimal fix.
+
+Signed-off-by: Jean Delvare <khali@linux-fr.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/hwmon/lm85.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/hwmon/lm85.c
++++ b/drivers/hwmon/lm85.c
+@@ -192,7 +192,7 @@ static int RANGE_TO_REG( int range )
+ {
+ int i;
+
+- if ( range < lm85_range_map[0] ) {
++ if (range <= lm85_range_map[0]) {
+ return 0 ;
+ } else if ( range > lm85_range_map[15] ) {
+ return 15 ;
+
+--
+
+From gregkh@mini.kroah.org Mon Jun 23 16:00:40 2008
+Message-Id: <20080623230040.512273192@mini.kroah.org>
+References: <20080623225737.837265824@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Mon, 23 Jun 2008 15:57:44 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Thomas Mingarelli <Thomas.Mingarelli@hp.com>
+Subject: [patch 07/10] watchdog: hpwdt: fix use of inline assembly
+Content-Disposition: inline; filename=watchdog-hpwdt-fix-use-of-inline-assembly.patch
+Content-Length: 8115
+Lines: 210
+
+2.6.25.9-stable review patch. If anyone has any objections, please let
+us know.
+
+------------------
+From: Linus Torvalds <torvalds@linux-foundation.org>
+
+commit 1f6ef2342972dc7fd623f360f84006e2304eb935 upstream
+
+The inline assembly in drivers/watchdog/hpwdt.c was incredibly broken,
+and included all the function prologue and epilogue stuff, even though
+it was itself then inside a C function where the compiler would add its
+own prologue and epilogue on top of it all.
+
+This then just _happened_ to work if you had exactly the right compiler
+version and exactly the right compiler flags, so that gcc just happened
+to not create any prologue at all (the gcc-generated epilogue wouldn't
+matter, since it would never be reached).
+
+But the more proper way to fix it is to simply not do this. Move the
+inline asm to the top level, with no surrounding function at all (the
+better alternative would be to remove the prologue and make it actually
+use proper description of the arguments to the inline asm, but that's a
+bigger change than the one I'm willing to make right now).
+
+Tested-by: S.Çağlar Onur <caglar@pardus.org.tr>
+Acked-by: Thomas Mingarelli <Thomas.Mingarelli@hp.com>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/watchdog/hpwdt.c | 154 ++++++++++++++++++++++++-----------------------
+ 1 file changed, 79 insertions(+), 75 deletions(-)
+
+--- a/drivers/watchdog/hpwdt.c
++++ b/drivers/watchdog/hpwdt.c
+@@ -140,49 +140,52 @@ static struct pci_device_id hpwdt_device
+ };
+ MODULE_DEVICE_TABLE(pci, hpwdt_devices);
+
++extern asmlinkage void asminline_call(struct cmn_registers *pi86Regs, unsigned long *pRomEntry);
++
+ #ifndef CONFIG_X86_64
+ /* --32 Bit Bios------------------------------------------------------------ */
+
+ #define HPWDT_ARCH 32
+
+-static void asminline_call(struct cmn_registers *pi86Regs,
+- unsigned long *pRomEntry)
+-{
+- asm("pushl %ebp \n\t"
+- "movl %esp, %ebp \n\t"
+- "pusha \n\t"
+- "pushf \n\t"
+- "push %es \n\t"
+- "push %ds \n\t"
+- "pop %es \n\t"
+- "movl 8(%ebp),%eax \n\t"
+- "movl 4(%eax),%ebx \n\t"
+- "movl 8(%eax),%ecx \n\t"
+- "movl 12(%eax),%edx \n\t"
+- "movl 16(%eax),%esi \n\t"
+- "movl 20(%eax),%edi \n\t"
+- "movl (%eax),%eax \n\t"
+- "push %cs \n\t"
+- "call *12(%ebp) \n\t"
+- "pushf \n\t"
+- "pushl %eax \n\t"
+- "movl 8(%ebp),%eax \n\t"
+- "movl %ebx,4(%eax) \n\t"
+- "movl %ecx,8(%eax) \n\t"
+- "movl %edx,12(%eax) \n\t"
+- "movl %esi,16(%eax) \n\t"
+- "movl %edi,20(%eax) \n\t"
+- "movw %ds,24(%eax) \n\t"
+- "movw %es,26(%eax) \n\t"
+- "popl %ebx \n\t"
+- "movl %ebx,(%eax) \n\t"
+- "popl %ebx \n\t"
+- "movl %ebx,28(%eax) \n\t"
+- "pop %es \n\t"
+- "popf \n\t"
+- "popa \n\t"
+- "leave \n\t" "ret");
+-}
++asm(".text \n\t"
++ ".align 4 \n"
++ "asminline_call: \n\t"
++ "pushl %ebp \n\t"
++ "movl %esp, %ebp \n\t"
++ "pusha \n\t"
++ "pushf \n\t"
++ "push %es \n\t"
++ "push %ds \n\t"
++ "pop %es \n\t"
++ "movl 8(%ebp),%eax \n\t"
++ "movl 4(%eax),%ebx \n\t"
++ "movl 8(%eax),%ecx \n\t"
++ "movl 12(%eax),%edx \n\t"
++ "movl 16(%eax),%esi \n\t"
++ "movl 20(%eax),%edi \n\t"
++ "movl (%eax),%eax \n\t"
++ "push %cs \n\t"
++ "call *12(%ebp) \n\t"
++ "pushf \n\t"
++ "pushl %eax \n\t"
++ "movl 8(%ebp),%eax \n\t"
++ "movl %ebx,4(%eax) \n\t"
++ "movl %ecx,8(%eax) \n\t"
++ "movl %edx,12(%eax) \n\t"
++ "movl %esi,16(%eax) \n\t"
++ "movl %edi,20(%eax) \n\t"
++ "movw %ds,24(%eax) \n\t"
++ "movw %es,26(%eax) \n\t"
++ "popl %ebx \n\t"
++ "movl %ebx,(%eax) \n\t"
++ "popl %ebx \n\t"
++ "movl %ebx,28(%eax) \n\t"
++ "pop %es \n\t"
++ "popf \n\t"
++ "popa \n\t"
++ "leave \n\t"
++ "ret \n\t"
++ ".previous");
+
+ /*
+ * cru_detect
+@@ -333,43 +336,44 @@ static int __devinit detect_cru_service(
+
+ #define HPWDT_ARCH 64
+
+-static void asminline_call(struct cmn_registers *pi86Regs,
+- unsigned long *pRomEntry)
+-{
+- asm("pushq %rbp \n\t"
+- "movq %rsp, %rbp \n\t"
+- "pushq %rax \n\t"
+- "pushq %rbx \n\t"
+- "pushq %rdx \n\t"
+- "pushq %r12 \n\t"
+- "pushq %r9 \n\t"
+- "movq %rsi, %r12 \n\t"
+- "movq %rdi, %r9 \n\t"
+- "movl 4(%r9),%ebx \n\t"
+- "movl 8(%r9),%ecx \n\t"
+- "movl 12(%r9),%edx \n\t"
+- "movl 16(%r9),%esi \n\t"
+- "movl 20(%r9),%edi \n\t"
+- "movl (%r9),%eax \n\t"
+- "call *%r12 \n\t"
+- "pushfq \n\t"
+- "popq %r12 \n\t"
+- "popfq \n\t"
+- "movl %eax, (%r9) \n\t"
+- "movl %ebx, 4(%r9) \n\t"
+- "movl %ecx, 8(%r9) \n\t"
+- "movl %edx, 12(%r9) \n\t"
+- "movl %esi, 16(%r9) \n\t"
+- "movl %edi, 20(%r9) \n\t"
+- "movq %r12, %rax \n\t"
+- "movl %eax, 28(%r9) \n\t"
+- "popq %r9 \n\t"
+- "popq %r12 \n\t"
+- "popq %rdx \n\t"
+- "popq %rbx \n\t"
+- "popq %rax \n\t"
+- "leave \n\t" "ret");
+-}
++asm(".text \n\t"
++ ".align 4 \n"
++ "asminline_call: \n\t"
++ "pushq %rbp \n\t"
++ "movq %rsp, %rbp \n\t"
++ "pushq %rax \n\t"
++ "pushq %rbx \n\t"
++ "pushq %rdx \n\t"
++ "pushq %r12 \n\t"
++ "pushq %r9 \n\t"
++ "movq %rsi, %r12 \n\t"
++ "movq %rdi, %r9 \n\t"
++ "movl 4(%r9),%ebx \n\t"
++ "movl 8(%r9),%ecx \n\t"
++ "movl 12(%r9),%edx \n\t"
++ "movl 16(%r9),%esi \n\t"
++ "movl 20(%r9),%edi \n\t"
++ "movl (%r9),%eax \n\t"
++ "call *%r12 \n\t"
++ "pushfq \n\t"
++ "popq %r12 \n\t"
++ "popfq \n\t"
++ "movl %eax, (%r9) \n\t"
++ "movl %ebx, 4(%r9) \n\t"
++ "movl %ecx, 8(%r9) \n\t"
++ "movl %edx, 12(%r9) \n\t"
++ "movl %esi, 16(%r9) \n\t"
++ "movl %edi, 20(%r9) \n\t"
++ "movq %r12, %rax \n\t"
++ "movl %eax, 28(%r9) \n\t"
++ "popq %r9 \n\t"
++ "popq %r12 \n\t"
++ "popq %rdx \n\t"
++ "popq %rbx \n\t"
++ "popq %rax \n\t"
++ "leave \n\t"
++ "ret \n\t"
++ ".previous");
+
+ /*
+ * dmi_find_cru
+
+--
+
+From gregkh@mini.kroah.org Mon Jun 23 16:00:40 2008
+Message-Id: <20080623230040.266388660@mini.kroah.org>
+References: <20080623225737.837265824@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Mon, 23 Jun 2008 15:57:43 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Bernhard Walle <bwalle@suse.de>
+Subject: [patch 06/10] Add return value to reserve_bootmem_node()
+Content-Disposition: inline; filename=add-return-value-to-reserve_bootmem_node.patch
+Content-Length: 1708
+Lines: 52
+
+2.6.25.9-stable review patch. If anyone has any objections, please let
+us know.
+
+------------------
+From: Bernhard Walle <bwalle@suse.de>
+
+commit 71c2742f5e6348d76ee62085cf0a13e5eff0f00e upstream
+
+This patch changes the function reserve_bootmem_node() from void to int,
+returning -ENOMEM if the allocation fails.
+
+This fixes a build problem on x86 with CONFIG_KEXEC=y and
+CONFIG_NEED_MULTIPLE_NODES=y
+
+Signed-off-by: Bernhard Walle <bwalle@suse.de>
+Reported-by: Adrian Bunk <bunk@kernel.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ include/linux/bootmem.h | 2 +-
+ mm/bootmem.c | 4 ++--
+ 2 files changed, 3 insertions(+), 3 deletions(-)
+
+--- a/include/linux/bootmem.h
++++ b/include/linux/bootmem.h
+@@ -94,7 +94,7 @@ extern unsigned long init_bootmem_node(p
+ unsigned long freepfn,
+ unsigned long startpfn,
+ unsigned long endpfn);
+-extern void reserve_bootmem_node(pg_data_t *pgdat,
++extern int reserve_bootmem_node(pg_data_t *pgdat,
+ unsigned long physaddr,
+ unsigned long size,
+ int flags);
+--- a/mm/bootmem.c
++++ b/mm/bootmem.c
+@@ -398,10 +398,10 @@ unsigned long __init init_bootmem_node(p
+ return init_bootmem_core(pgdat, freepfn, startpfn, endpfn);
+ }
+
+-void __init reserve_bootmem_node(pg_data_t *pgdat, unsigned long physaddr,
++int __init reserve_bootmem_node(pg_data_t *pgdat, unsigned long physaddr,
+ unsigned long size, int flags)
+ {
+- reserve_bootmem_core(pgdat->bdata, physaddr, size, flags);
++ return reserve_bootmem_core(pgdat->bdata, physaddr, size, flags);
+ }
+
+ void __init free_bootmem_node(pg_data_t *pgdat, unsigned long physaddr,
+
+--
+
+From gregkh@mini.kroah.org Mon Jun 23 16:00:40 2008
+Message-Id: <20080623230040.020671538@mini.kroah.org>
+References: <20080623225737.837265824@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Mon, 23 Jun 2008 15:57:42 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org,
+ jejb@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>,
+ Jan Beulich <jbeulich@novell.com>,
+ Ingo Molnar <mingo@elte.hu>
+Subject: [patch 05/10] x86: set PAE PHYSICAL_MASK_SHIFT to 44 bits.
+Content-Disposition: inline; filename=x86-set-pae-physical_mask_shift-to-44-bits.patch
+Content-Length: 1697
+Lines: 50
+
+2.6.25.9-stable review patch. If anyone has any objections, please let
+us know.
+
+------------------
+From: Jeremy Fitzhardinge <jeremy@goop.org>
+
+commit ad524d46f36bbc32033bb72ba42958f12bf49b06 upstream
+
+When a 64-bit x86 processor runs in 32-bit PAE mode, a pte can
+potentially have the same number of physical address bits as the
+64-bit host ("Enhanced Legacy PAE Paging"). This means, in theory,
+we could have up to 52 bits of physical address in a pte.
+
+The 32-bit kernel uses a 32-bit unsigned long to represent a pfn.
+This means that it can only represent physical addresses up to 32+12=44
+bits wide. Rather than widening pfns everywhere, just set 2^44 as the
+Linux x86_32-PAE architectural limit for physical address size.
+
+This is a bugfix for two cases:
+1. running a 32-bit PAE kernel on a machine with
+ more than 64GB RAM.
+2. running a 32-bit PAE Xen guest on a host machine with
+ more than 64GB RAM
+
+In both cases, a pte could need to have more than 36 bits of physical,
+and masking it to 36-bits will cause fairly severe havoc.
+
+Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
+Cc: Jan Beulich <jbeulich@novell.com>
+Signed-off-by: Ingo Molnar <mingo@elte.hu>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ include/asm-x86/page_32.h | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- a/include/asm-x86/page_32.h
++++ b/include/asm-x86/page_32.h
+@@ -14,7 +14,8 @@
+ #define __PAGE_OFFSET _AC(CONFIG_PAGE_OFFSET, UL)
+
+ #ifdef CONFIG_X86_PAE
+-#define __PHYSICAL_MASK_SHIFT 36
++/* 44=32+12, the limit we can fit into an unsigned long pfn */
++#define __PHYSICAL_MASK_SHIFT 44
+ #define __VIRTUAL_MASK_SHIFT 32
+ #define PAGETABLE_LEVELS 3
+
+
+--
+
+From gregkh@mini.kroah.org Mon Jun 23 16:00:39 2008
+Message-Id: <20080623230039.650869160@mini.kroah.org>
+References: <20080623225737.837265824@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Mon, 23 Jun 2008 15:57:41 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org,
+ jejb@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Bernhard Walle <bwalle@suse.de>,
+ Ingo Molnar <mingo@elte.hu>
+Subject: [patch 04/10] x86: use BOOTMEM_EXCLUSIVE on 32-bit
+Content-Disposition: inline; filename=x86-use-bootmem_exclusive-on-32-bit.patch
+Content-Length: 1429
+Lines: 45
+
+2.6.25.9-stable review patch. If anyone has any objections, please let
+us know.
+
+------------------
+From: Bernhard Walle <bwalle@suse.de>
+
+commit d3942cff620bea073fc4e3c8ed878eb1e84615ce upstream
+
+This patch uses the BOOTMEM_EXCLUSIVE for crashkernel reservation also for
+i386 and prints a error message on failure.
+
+The patch is still for 2.6.26 since it is only bug fixing. The unification
+of reserve_crashkernel() between i386 and x86_64 should be done for 2.6.27.
+
+Signed-off-by: Bernhard Walle <bwalle@suse.de>
+Signed-off-by: Ingo Molnar <mingo@elte.hu>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ arch/x86/kernel/setup_32.c | 10 ++++++++--
+ 1 file changed, 8 insertions(+), 2 deletions(-)
+
+--- a/arch/x86/kernel/setup_32.c
++++ b/arch/x86/kernel/setup_32.c
+@@ -483,10 +483,16 @@ static void __init reserve_crashkernel(v
+ (unsigned long)(crash_size >> 20),
+ (unsigned long)(crash_base >> 20),
+ (unsigned long)(total_mem >> 20));
++
++ if (reserve_bootmem(crash_base, crash_size,
++ BOOTMEM_EXCLUSIVE) < 0) {
++ printk(KERN_INFO "crashkernel reservation "
++ "failed - memory is in use\n");
++ return;
++ }
++
+ crashk_res.start = crash_base;
+ crashk_res.end = crash_base + crash_size - 1;
+- reserve_bootmem(crash_base, crash_size,
+- BOOTMEM_DEFAULT);
+ } else
+ printk(KERN_INFO "crashkernel reservation failed - "
+ "you have to specify a base address\n");
+
+--
+
+From gregkh@mini.kroah.org Mon Jun 23 16:00:39 2008
+Message-Id: <20080623230039.361638196@mini.kroah.org>
+References: <20080623225737.837265824@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Mon, 23 Jun 2008 15:57:40 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ "David S. Miller" <davem@davemloft.net>
+Subject: [patch 03/10] sctp: Make sure N * sizeof(union sctp_addr) does not overflow.
+Content-Disposition: inline; filename=sctp-make-sure-n-sizeof-does-not-overflow.patch
+Content-Length: 1070
+Lines: 36
+
+2.6.25.9-stable review patch. If anyone has any objections, please let
+us know.
+
+------------------
+From: David S. Miller <davem@davemloft.net>
+
+commit 735ce972fbc8a65fb17788debd7bbe7b4383cc62 upstream
+
+As noticed by Gabriel Campana, the kmalloc() length arg
+passed in by sctp_getsockopt_local_addrs_old() can overflow
+if ->addr_num is large enough.
+
+Therefore, enforce an appropriate limit.
+
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ net/sctp/socket.c | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+--- a/net/sctp/socket.c
++++ b/net/sctp/socket.c
+@@ -4421,7 +4421,9 @@ static int sctp_getsockopt_local_addrs_o
+ if (copy_from_user(&getaddrs, optval, len))
+ return -EFAULT;
+
+- if (getaddrs.addr_num <= 0) return -EINVAL;
++ if (getaddrs.addr_num <= 0 ||
++ getaddrs.addr_num >= (INT_MAX / sizeof(union sctp_addr)))
++ return -EINVAL;
+ /*
+ * For UDP-style sockets, id specifies the association to query.
+ * If the id field is set to the value '0' then the locally bound
+
+--
+
+From gregkh@mini.kroah.org Mon Jun 23 16:00:39 2008
+Message-Id: <20080623230039.170847397@mini.kroah.org>
+References: <20080623225737.837265824@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Mon, 23 Jun 2008 15:57:39 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Oleg Nesterov <oleg@tv-sign.ru>,
+ Nick Piggin <npiggin@suse.de>,
+ KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>,
+ Hugh Dickins <hugh@veritas.com>,
+ Ingo Molnar <mingo@elte.hu>,
+ Roland McGrath <roland@redhat.com>
+Subject: [patch 02/10] Reinstate ZERO_PAGE optimization in get_user_pages() and fix XIP
+Content-Disposition: inline; filename=reinstate-zero_page-optimization-in-get_user_pages-and-fix-xip.patch
+Content-Length: 4316
+Lines: 140
+
+2.6.25.9-stable review patch. If anyone has any objections, please let
+us know.
+
+------------------
+From: Linus Torvalds <torvalds@linux-foundation.org>
+
+commit 89f5b7da2a6bad2e84670422ab8192382a5aeb9f upstream
+
+KAMEZAWA Hiroyuki and Oleg Nesterov point out that since the commit
+557ed1fa2620dc119adb86b34c614e152a629a80 ("remove ZERO_PAGE") removed
+the ZERO_PAGE from the VM mappings, any users of get_user_pages() will
+generally now populate the VM with real empty pages needlessly.
+
+We used to get the ZERO_PAGE when we did the "handle_mm_fault()", but
+since fault handling no longer uses ZERO_PAGE for new anonymous pages,
+we now need to handle that special case in follow_page() instead.
+
+In particular, the removal of ZERO_PAGE effectively removed the core
+file writing optimization where we would skip writing pages that had not
+been populated at all, and increased memory pressure a lot by allocating
+all those useless newly zeroed pages.
+
+This reinstates the optimization by making the unmapped PTE case the
+same as for a non-existent page table, which already did this correctly.
+
+While at it, this also fixes the XIP case for follow_page(), where the
+caller could not differentiate between the case of a page that simply
+could not be used (because it had no "struct page" associated with it)
+and a page that just wasn't mapped.
+
+We do that by simply returning an error pointer for pages that could not
+be turned into a "struct page *". The error is arbitrarily picked to be
+EFAULT, since that was what get_user_pages() already used for the
+equivalent IO-mapped page case.
+
+[ Also removed an impossible test for pte_offset_map_lock() failing:
+ that's not how that function works ]
+
+Acked-by: Oleg Nesterov <oleg@tv-sign.ru>
+Acked-by: Nick Piggin <npiggin@suse.de>
+Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
+Cc: Hugh Dickins <hugh@veritas.com>
+Cc: Andrew Morton <akpm@linux-foundation.org>
+Cc: Ingo Molnar <mingo@elte.hu>
+Cc: Roland McGrath <roland@redhat.com>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ arch/powerpc/kernel/vdso.c | 2 +-
+ mm/memory.c | 17 +++++++++++++----
+ mm/migrate.c | 10 ++++++++++
+ 3 files changed, 24 insertions(+), 5 deletions(-)
+
+--- a/arch/powerpc/kernel/vdso.c
++++ b/arch/powerpc/kernel/vdso.c
+@@ -141,7 +141,7 @@ static void dump_one_vdso_page(struct pa
+ printk("kpg: %p (c:%d,f:%08lx)", __va(page_to_pfn(pg) << PAGE_SHIFT),
+ page_count(pg),
+ pg->flags);
+- if (upg/* && pg != upg*/) {
++ if (upg && !IS_ERR(upg) /* && pg != upg*/) {
+ printk(" upg: %p (c:%d,f:%08lx)", __va(page_to_pfn(upg)
+ << PAGE_SHIFT),
+ page_count(upg),
+--- a/mm/memory.c
++++ b/mm/memory.c
+@@ -943,17 +943,15 @@ struct page *follow_page(struct vm_area_
+ }
+
+ ptep = pte_offset_map_lock(mm, pmd, address, &ptl);
+- if (!ptep)
+- goto out;
+
+ pte = *ptep;
+ if (!pte_present(pte))
+- goto unlock;
++ goto no_page;
+ if ((flags & FOLL_WRITE) && !pte_write(pte))
+ goto unlock;
+ page = vm_normal_page(vma, address, pte);
+ if (unlikely(!page))
+- goto unlock;
++ goto bad_page;
+
+ if (flags & FOLL_GET)
+ get_page(page);
+@@ -968,6 +966,15 @@ unlock:
+ out:
+ return page;
+
++bad_page:
++ pte_unmap_unlock(ptep, ptl);
++ return ERR_PTR(-EFAULT);
++
++no_page:
++ pte_unmap_unlock(ptep, ptl);
++ if (!pte_none(pte))
++ return page;
++ /* Fall through to ZERO_PAGE handling */
+ no_page_table:
+ /*
+ * When core dumping an enormous anonymous area that nobody
+@@ -1104,6 +1111,8 @@ int get_user_pages(struct task_struct *t
+
+ cond_resched();
+ }
++ if (IS_ERR(page))
++ return i ? i : PTR_ERR(page);
+ if (pages) {
+ pages[i] = page;
+
+--- a/mm/migrate.c
++++ b/mm/migrate.c
+@@ -858,6 +858,11 @@ static int do_move_pages(struct mm_struc
+ goto set_status;
+
+ page = follow_page(vma, pp->addr, FOLL_GET);
++
++ err = PTR_ERR(page);
++ if (IS_ERR(page))
++ goto set_status;
++
+ err = -ENOENT;
+ if (!page)
+ goto set_status;
+@@ -921,6 +926,11 @@ static int do_pages_stat(struct mm_struc
+ goto set_status;
+
+ page = follow_page(vma, pm->addr, 0);
++
++ err = PTR_ERR(page);
++ if (IS_ERR(page))
++ goto set_status;
++
+ err = -ENOENT;
+ /* Use PageReserved to check for zero page */
+ if (!page || PageReserved(page))
+
+--
+
+From gregkh@mini.kroah.org Mon Jun 23 16:00:39 2008
+Message-Id: <20080623230038.876059930@mini.kroah.org>
+References: <20080623225737.837265824@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Mon, 23 Jun 2008 15:57:38 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ csnook@redhat.com,
+ advantis@gmx.net,
+ jgarzik@redhat.com,
+ Jay Cliburn <jacliburn@bellsouth.net>
+Subject: [patch 01/10] atl1: relax eeprom mac address error check
+Content-Disposition: inline; filename=atl1-relax-eeprom-mac-address-error-check.patch
+Content-Length: 1707
+Lines: 55
+
+
+2.6.25.9-stable review patch. If anyone has any objections, please let
+us know.
+
+------------------
+From: Radu Cristescu <advantis@gmx.net>
+
+upstream commit: 58c7821c4264a7ddd6f0c31c5caaf393b3897f10
+
+The atl1 driver tries to determine the MAC address thusly:
+
+ - If an EEPROM exists, read the MAC address from EEPROM and
+ validate it.
+ - If an EEPROM doesn't exist, try to read a MAC address from
+ SPI flash.
+ - If that fails, try to read a MAC address directly from the
+ MAC Station Address register.
+ - If that fails, assign a random MAC address provided by the
+ kernel.
+
+We now have a report of a system fitted with an EEPROM containing all
+zeros where we expect the MAC address to be, and we currently handle
+this as an error condition. Turns out, on this system the BIOS writes
+a valid MAC address to the NIC's MAC Station Address register, but we
+never try to read it because we return an error when we find the all-
+zeros address in EEPROM.
+
+This patch relaxes the error check and continues looking for a MAC
+address even if it finds an illegal one in EEPROM.
+
+http://ubuntuforums.org/showthread.php?t=562617
+
+[jacliburn@bellsouth.net: backport to 2.6.25.7]
+
+Signed-off-by: Radu Cristescu <advantis@gmx.net>
+Signed-off-by: Jay Cliburn <jacliburn@bellsouth.net>
+Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/net/atl1/atl1_hw.c | 1 -
+ 1 file changed, 1 deletion(-)
+
+--- a/drivers/net/atl1/atl1_hw.c
++++ b/drivers/net/atl1/atl1_hw.c
+@@ -250,7 +250,6 @@ static int atl1_get_permanent_address(st
+ memcpy(hw->perm_mac_addr, eth_addr, ETH_ALEN);
+ return 0;
+ }
+- return 1;
+ }
+
+ /* see if SPI FLAGS exist ? */
+
+--
+