|
@@ -7652,11 +7652,18 @@ int alloc_contig_range(unsigned long start, unsigned long end,
|
|
|
|
|
|
/*
|
|
|
* In case of -EBUSY, we'd like to know which page causes problem.
|
|
|
- * So, just fall through. We will check it in test_pages_isolated().
|
|
|
+ * So, just fall through. test_pages_isolated() has a tracepoint
|
|
|
+ * which will report the busy page.
|
|
|
+ *
|
|
|
+ * It is possible that busy pages could become available before
|
|
|
+ * the call to test_pages_isolated, and the range will actually be
|
|
|
+ * allocated. So, if we fall through be sure to clear ret so that
|
|
|
+ * -EBUSY is not accidentally used or returned to caller.
|
|
|
*/
|
|
|
ret = __alloc_contig_migrate_range(&cc, start, end);
|
|
|
if (ret && ret != -EBUSY)
|
|
|
goto done;
|
|
|
+ ret =0;
|
|
|
|
|
|
/*
|
|
|
* Pages from [start, end) are within a MAX_ORDER_NR_PAGES
|