[SPARC64]: Fix loop termination in mark_kpte_bitmap()
If we were aligned, but didn't have at least 256MB left to process, we would loop forever. Thanks to fabbione for the report and testing the fix. Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
74ae998772
commit
f7c00338cf
|
@ -973,12 +973,15 @@ static void __init mark_kpte_bitmap(unsigned long start, unsigned long end)
|
||||||
while (start < end) {
|
while (start < end) {
|
||||||
long remains;
|
long remains;
|
||||||
|
|
||||||
|
remains = end - start;
|
||||||
|
if (remains < size_256MB)
|
||||||
|
break;
|
||||||
|
|
||||||
if (start & mask_256MB) {
|
if (start & mask_256MB) {
|
||||||
start = (start + size_256MB) & ~mask_256MB;
|
start = (start + size_256MB) & ~mask_256MB;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
remains = end - start;
|
|
||||||
while (remains >= size_256MB) {
|
while (remains >= size_256MB) {
|
||||||
unsigned long index = start >> shift_256MB;
|
unsigned long index = start >> shift_256MB;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue