Commit e47608ab authored by zijun_hu's avatar zijun_hu Committed by Linus Torvalds

mm/memblock.c: fix NULL dereference error

It causes NULL dereference error and failure to get type_a->regions[0]
info if parameter type_b of __next_mem_range_rev() == NULL

Fix this by checking before dereferring and initializing idx_b to 0

The approach is tested by dumping all types of region via
__memblock_dump_all() and __next_mem_range_rev() fixed to UART
separately the result is okay after checking the logs.

Link: http://lkml.kernel.org/r/57A0320D.6070102@zoho.comSigned-off-by: default avatarzijun_hu <zijun_hu@htc.com>
Tested-by: default avatarzijun_hu <zijun_hu@htc.com>
Acked-by: default avatarTejun Heo <tj@kernel.org>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 4b16b0c0
...@@ -994,7 +994,10 @@ void __init_memblock __next_mem_range_rev(u64 *idx, int nid, ulong flags, ...@@ -994,7 +994,10 @@ void __init_memblock __next_mem_range_rev(u64 *idx, int nid, ulong flags,
if (*idx == (u64)ULLONG_MAX) { if (*idx == (u64)ULLONG_MAX) {
idx_a = type_a->cnt - 1; idx_a = type_a->cnt - 1;
idx_b = type_b->cnt; if (type_b != NULL)
idx_b = type_b->cnt;
else
idx_b = 0;
} }
for (; idx_a >= 0; idx_a--) { for (; idx_a >= 0; idx_a--) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment