mm: negative left shift count when PAGE_SHIFT > 20
Subsystems (2)
PATCH 1/1 mm: negative left shift count when PAGE_SHIFT > 20
When PAGE_SHIFT > 20, the result of "20 - PAGE_SHIFT" is negative. The previous calculating here will generate an unexpected result. In addition, if PAGE_SIZE >= 1MB, The memory size of "numentries" was already integral multiple of 1MB.
Signed-off-by Jerry Zhou <[email protected]>
--- mm/page_alloc.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-)
mm/page_alloc.c +4 -3
@@ -5745,9 +5745,10 @@ void *__init alloc_large_system_hash(const char *tablename,if (!numentries) {/* round applicable memory size up to nearest megabyte */ numentries = nr_kernel_pages; - numentries += (1UL << (20 -PAGE_SHIFT )) -1 ; - numentries >>=20 -PAGE_SHIFT ; - numentries <<=20 -PAGE_SHIFT ; + +/* It isn't necessary when PAGE_SIZE >= 1MB */ +if (PAGE_SHIFT <20 ) + numentries =round_up (numentries, (1 <<20 )/PAGE_SIZE );/* limit to 1 bucket per 2^scale bytes of low memory */ if (scale >PAGE_SHIFT )
Signature · 7 lines
1.8.1.5 -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"[email protected]"> [email protected] </a>