public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH]i386: fix overflow in vmap on an x86 system which has more than 4GB memory.
@ 2006-09-15 15:34 Anatoli Antonovitch
  2006-09-23 17:26 ` Hugh Dickins
  0 siblings, 1 reply; 3+ messages in thread
From: Anatoli Antonovitch @ 2006-09-15 15:34 UTC (permalink / raw)
  To: linux-kernel

Description
(max_mapnr << PAGE_SHIFT) would overflow on an x86 system which has more
than 4GB memory, and hence cause vmap to fail every time.


Signed-off-by: Michael Chen <micche@ati.com>

Patch
diff -Nur linux-2.4.21-40.EL/mm/vmalloc.c
linux-2.4.21-40.EL.diff/mm/vmalloc.c
--- linux-2.4.21-40.EL/mm/vmalloc.c     2006-02-02 21:13:20.000000000
-0600
+++ linux-2.4.21-40.EL.diff/mm/vmalloc.c        2006-09-04
11:29:33.000000000 -0500
@@ -298,8 +298,8 @@
        struct vm_struct *area;
        unsigned long size = count << PAGE_SHIFT;
 
-       if (!size || size > (max_mapnr << PAGE_SHIFT))
-               return NULL;
+    if (!count || count > max_mapnr)
+        return NULL;
        area = get_vm_area(size, flags);
        if (!area) {
                return NULL;



^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH]i386: fix overflow in vmap on an x86 system which has more than 4GB memory.
  2006-09-15 15:34 [PATCH]i386: fix overflow in vmap on an x86 system which has more than 4GB memory Anatoli Antonovitch
@ 2006-09-23 17:26 ` Hugh Dickins
  2006-09-23 23:55   ` Willy Tarreau
  0 siblings, 1 reply; 3+ messages in thread
From: Hugh Dickins @ 2006-09-23 17:26 UTC (permalink / raw)
  To: Anatoli Antonovitch
  Cc: Willy Tarreau, Tigran Aivazian, Michael Chen, linux-kernel

This is a 2.4 fix (not needed in 2.6): let's CC maintainer Willy Tarreau.

On Fri, 15 Sep 2006, Anatoli Antonovitch wrote:

> Description
> (max_mapnr << PAGE_SHIFT) would overflow on an x86 system which has more
> than 4GB memory, and hence cause vmap to fail every time.

Good point, thanks for the patch.  Sorry I'm so slow to get to it.

> 
> Signed-off-by: Michael Chen <micche@ati.com>
> 
> Patch
> diff -Nur linux-2.4.21-40.EL/mm/vmalloc.c
> linux-2.4.21-40.EL.diff/mm/vmalloc.c
> --- linux-2.4.21-40.EL/mm/vmalloc.c     2006-02-02 21:13:20.000000000
> -0600
> +++ linux-2.4.21-40.EL.diff/mm/vmalloc.c        2006-09-04

And still needs fixing in latest mainline 2.4.

> 11:29:33.000000000 -0500
> @@ -298,8 +298,8 @@
>         struct vm_struct *area;
>         unsigned long size = count << PAGE_SHIFT;
>  
> -       if (!size || size > (max_mapnr << PAGE_SHIFT))
> -               return NULL;
> +    if (!count || count > max_mapnr)
> +        return NULL;

I'm afraid the tabs got messed up in both the old and new lines.
Also, count is a signed int (whereas size and max_mapnr are both
unsigned longs), so best reject "count <= 0" rather than just "!count".

>         area = get_vm_area(size, flags);
>         if (!area) {
>                 return NULL;

Here's a replacement patch for Willy.  Anatoli, you didn't sign
off the patch yourself: so I'm assuming Michael is the originator.


From: Michael Chen <micche@ati.com>

(max_mapnr << PAGE_SHIFT) would overflow on a system which has
4GB memory or more, and so could cause vmap to fail every time.

Signed-off-by: Michael Chen <micche@ati.com>
Signed-off-by: Hugh Dickins <hugh@veritas.com>
---

 mm/vmalloc.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- 2.4.34-pre3/mm/vmalloc.c	2004-04-14 14:05:41.000000000 +0100
+++ linux/mm/vmalloc.c	2006-09-23 17:52:59.000000000 +0100
@@ -293,7 +293,7 @@ void * vmap(struct page **pages, int cou
 	struct vm_struct *area;
 	unsigned long size = count << PAGE_SHIFT;
 
-	if (!size || size > (max_mapnr << PAGE_SHIFT))
+	if (count <= 0 || count > max_mapnr)
 		return NULL;
 	area = get_vm_area(size, flags);
 	if (!area) {

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH]i386: fix overflow in vmap on an x86 system which has more than 4GB memory.
  2006-09-23 17:26 ` Hugh Dickins
@ 2006-09-23 23:55   ` Willy Tarreau
  0 siblings, 0 replies; 3+ messages in thread
From: Willy Tarreau @ 2006-09-23 23:55 UTC (permalink / raw)
  To: Hugh Dickins
  Cc: Anatoli Antonovitch, Tigran Aivazian, Michael Chen, linux-kernel

Hi Hugh !

On Sat, Sep 23, 2006 at 06:26:26PM +0100, Hugh Dickins wrote:
> This is a 2.4 fix (not needed in 2.6): let's CC maintainer Willy Tarreau.
> 
> On Fri, 15 Sep 2006, Anatoli Antonovitch wrote:
> 
> > Description
> > (max_mapnr << PAGE_SHIFT) would overflow on an x86 system which has more
> > than 4GB memory, and hence cause vmap to fail every time.
> 
> Good point, thanks for the patch.  Sorry I'm so slow to get to it.

Don't worry, Andrew already forwarded it to me. BTW, thanks for your
review and comment, I'll finally apply yours since it's better.

Cheers,
Willy


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2006-09-24  0:17 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-09-15 15:34 [PATCH]i386: fix overflow in vmap on an x86 system which has more than 4GB memory Anatoli Antonovitch
2006-09-23 17:26 ` Hugh Dickins
2006-09-23 23:55   ` Willy Tarreau

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox