Messages in this thread | | | Date | Sun, 10 Aug 2014 14:14:12 +0800 | From | tangchen <> | Subject | Re: [PATCH 1/1] memblock, memhotplug: Fix wrong type in memblock_find_in_range_node(). |
| |
Sorry, add Xishi Qiu <qiuxishi@huawei.com>
On 08/10/2014 02:12 PM, Tang Chen wrote: > In memblock_find_in_range_node(), we defeind ret as int. But it shoule > be phys_addr_t because it is used to store the return value from > __memblock_find_range_bottom_up(). > > The bug has not been triggered because when allocating low memory near > the kernel end, the "int ret" won't turn out to be minus. When we started > to allocate memory on other nodes, and the "int ret" could be minus. > Then the kernel will panic. > > A simple way to reproduce this: comment out the following code in numa_init(), > > memblock_set_bottom_up(false); > > and the kernel won't boot. > > Reported-by: Xishi Qiu <qiuxishi@huawei.com> > Signed-off-by: Tang Chen <tangchen@cn.fujitsu.com> > --- > mm/memblock.c | 3 +-- > 1 file changed, 1 insertion(+), 2 deletions(-) > > diff --git a/mm/memblock.c b/mm/memblock.c > index 6d2f219..70fad0c 100644 > --- a/mm/memblock.c > +++ b/mm/memblock.c > @@ -192,8 +192,7 @@ phys_addr_t __init_memblock memblock_find_in_range_node(phys_addr_t size, > phys_addr_t align, phys_addr_t start, > phys_addr_t end, int nid) > { > - int ret; > - phys_addr_t kernel_end; > + phys_addr_t kernel_end, ret; > > /* pump up @end */ > if (end == MEMBLOCK_ALLOC_ACCESSIBLE)
| |