Hi Tejun, I am sorry, I don't take any test for the patch attached in previous mail, and it can't fix the bug completely, please ignore it I provide a new patch attached in this mail which pass test and can fix the issue described below __next_mem_range_rev() defined in mm/memblock.c doesn't Achieve desired purpose if parameter type_b ==NULL This new patch can fix the issue and get the last reversed region contained in type_a rightly The new patch is descripted as follows From 0e242eda7696f176a9a2e585a1db01f0575b39c9 Mon Sep 17 00:00:00 2001 From: zijun_hu <zijun_hu@xxxxxxx> Date: Mon, 25 Jul 2016 15:06:57 +0800 Subject: [PATCH] mm/memblock.c: fix index adjustment error in __next_mem_range_rev() fix region index adjustment error when parameter type_b of __next_mem_range_rev() == NULL Signed-off-by: zijun_hu <zijun_hu@xxxxxxx> --- mm/memblock.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/mm/memblock.c b/mm/memblock.c index ac12489..cc5aeab 100644 --- a/mm/memblock.c +++ b/mm/memblock.c @@ -991,7 +991,11 @@ void __init_memblock __next_mem_range_rev(u64 *idx, int nid, ulong flags, if (*idx == (u64)ULLONG_MAX) { idx_a = type_a->cnt - 1; -idx_b = type_b->cnt; +/* in order to get the last reversed region rightly */ +if (type_b != NULL) +idx_b = type_b->cnt; +else +idx_b = 0; } for (; idx_a >= 0; idx_a--) { @@ -1024,7 +1028,7 @@ void __init_memblock __next_mem_range_rev(u64 *idx, int nid, ulong flags, *out_end = m_end; if (out_nid) *out_nid = m_nid; -idx_a++; +idx_a--; *idx = (u32)idx_a | (u64)idx_b << 32; return; } -- 1.9.1 Zijun Hu Tel: +86 021 3813 0008 Ext: 8556 F1 Building, 299 Kang Wei Road, Pudong New Area, Shanghai 201315, China htc.com -----邮件原件----- 发件人: Tejun Heo [mailto:htejun@xxxxxxxxx] 代表 Tejun Heo 发送时间: 2016年7月26日 2:52 收件人: Zijun Hu(胡自軍) 抄送: akpm@xxxxxxxxxxxxxxxxxxxx; kuleshovmail@xxxxxxxxx; ard.biesheuvel@xxxxxxxxxx; tangchen@xxxxxxxxxxxxxx; weiyang@xxxxxxxxxxxxxxxxxx; dev@xxxxxxxxxx; david@xxxxxxxxxxxxxxxxxxxxx; linux-mm@xxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx 主题: Re: [PATCH] mm/memblock.c: fix index adjustment error in __next_mem_range_rev() On Mon, Jul 25, 2016 at 07:34:12AM +0000, zijun_hu@xxxxxxx wrote: > Hi All, > There is a bug in mm/memblock.c > Could you review and phase-in this patch? > Thanks a lot > > From 3abf1822d30f77f126bd7a3c09bb243d9c17a029 Mon Sep 17 00:00:00 2001 > From: zijun_hu <zijun_hu@xxxxxxx> > Date: Mon, 25 Jul 2016 15:06:57 +0800 > Subject: [PATCH] mm/memblock.c: fix index adjustment error in > __next_mem_range_rev() > > fix region index adjustment error when parameter type_b of > __next_mem_range_rev() == NULL > > Signed-off-by: zijun_hu <zijun_hu@xxxxxxx> > --- > mm/memblock.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/mm/memblock.c b/mm/memblock.c index ac12489..b14973e > 100644 > --- a/mm/memblock.c > +++ b/mm/memblock.c > @@ -1024,7 +1024,7 @@ void __init_memblock __next_mem_range_rev(u64 *idx, int nid, ulong flags, > *out_end = m_end; > if (out_nid) > *out_nid = m_nid; > - idx_a++; > + idx_a--; Looks good to me. Do you happen to have a test case for this bug? Thanks. -- tejun
CONFIDENTIALITY NOTE : The information in this e-mail is confidential and privileged; it is intended for use solely by the individual or entity named as the recipient hereof. Disclosure, copying, distribution, or use of the contents of this e-mail by persons other than the intended recipient is strictly prohibited and may violate applicable laws. If you have received this e-mail in error, please delete the original message and notify us by return email or collect call immediately. Thank you. HTC Corporation |
Attachment:
0001-mm-memblock.c-fix-index-adjustment-error-in.patch
Description: 0001-mm-memblock.c-fix-index-adjustment-error-in.patch