Hello,
In FUNCTION __vmalloc ,
There is a statement;
if (!size || (size >> PAGE_SHIFT) > num_physpages)
return NULL;
I think the condition (num_phypages >>PAGE_SHIFT) > num_physpages
is not very accurate. As we all know, linux kernel and other stuff
occupy some memory,so it is better to express like below, I think.
if (!size || size > max_vmalloc_size)
return NULL;
max_vmalloc_size = (num_physpages >> PAGE_SHIFT) - kernel_size
-reserved_space_for_emergence_use
BTW, I would like to know whether there are reserved physical memory for
emergence use.
Thanks in advance!
Milo
Zhonglin Zhang <[email protected]> wrote:
>
> In FUNCTION __vmalloc ,
>
> There is a statement;
>
> if (!size || (size >> PAGE_SHIFT) > num_physpages)
> return NULL;
Probably the second part of the test should be removed. If the requested
area size is
a) less than the size of the vmalloc arena and
b) more than the number of allocatable pages
then yes, the machine will have a ton of trouble allocating the memory and
will actually lock up.
But the only way that will happen is if some code is made to do a large
number of smaller vmallocs. Nobody does a huge single vmalloc like that.
On Wed, 2005-01-05 at 19:38 -0800, Andrew Morton wrote:
> Zhonglin Zhang <[email protected]> wrote:
> >
> > In FUNCTION __vmalloc ,
> >
> > There is a statement;
> >
> > if (!size || (size >> PAGE_SHIFT) > num_physpages)
> > return NULL;
>
> Probably the second part of the test should be removed. If the requested
> area size is
>
> a) less than the size of the vmalloc arena and
>
> b) more than the number of allocatable pages
>
> then yes, the machine will have a ton of trouble allocating the memory and
> will actually lock up.
>
> But the only way that will happen is if some code is made to do a large
> number of smaller vmallocs. Nobody does a huge single vmalloc like that.
I thought that second test was to avoid stupid bugs that may exist in
some random (perhaps ex-tree) modules that would otherwise cause the
machine to lockup...
Best regards,
Anton
--
Anton Altaparmakov <aia21 at cam.ac.uk> (replace at with @)
Unix Support, Computing Service, University of Cambridge, CB2 3QH, UK
Linux NTFS maintainer / IRC: #ntfs on irc.freenode.net
WWW: http://linux-ntfs.sf.net/ & http://www-stu.christs.cam.ac.uk/~aia21/