afs: Provide a splice-read wrapper
[linux-block.git] / mm / memblock.c
index 25fd0626a9e7bcaba3bc677839312584341d95f1..3feafea06ab2128b6daf332d5963ae5e2e985a89 100644 (file)
@@ -2043,7 +2043,16 @@ static void __init __free_pages_memory(unsigned long start, unsigned long end)
        int order;
 
        while (start < end) {
-               order = min(MAX_ORDER - 1UL, __ffs(start));
+               /*
+                * Free the pages in the largest chunks alignment allows.
+                *
+                * __ffs() behaviour is undefined for 0. start == 0 is
+                * MAX_ORDER-aligned, set order to MAX_ORDER for the case.
+                */
+               if (start)
+                       order = min_t(int, MAX_ORDER, __ffs(start));
+               else
+                       order = MAX_ORDER;
 
                while (start + (1UL << order) > end)
                        order--;