| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -636,7 +636,11 @@ static mi_decl_cache_align _Atomic(uintptr_t) mi_huge_start; // = 0 | |||
| 636 | 636 | // Claim an aligned address range for huge pages | |
| 637 | 637 | static uint8_t* mi_os_claim_huge_pages(size_t pages, size_t* total_size) { | |
| 638 | 638 | if (total_size != NULL) *total_size = 0; | |
| 639 | - const size_t size = pages * MI_HUGE_OS_PAGE_SIZE; | ||
| 639 | + const size_t size = 0; | ||
| 640 | + if (mi_mul_overflow(pages,MI_HUGE_OS_PAGE_SIZE,&size)) { | ||
| 641 | + _mi_warning_message("too many huge pages requested: %zu\n", pages); | ||
| 642 | + return NULL; | ||
| 643 | + } | ||
| 640 | 644 | ||
| 641 | 645 | uintptr_t start = 0; | |
| 642 | 646 | uintptr_t end = 0; | |
@@ -712,7 +716,7 @@ void* _mi_os_alloc_huge_os_pages(size_t pages, int numa_node, mi_msecs_t max_mse | |||
| 712 | 716 | if (max_msecs > 0) { | |
| 713 | 717 | mi_msecs_t elapsed = _mi_clock_end(start_t); | |
| 714 | 718 | if (page >= 1) { | |
| 715 | - mi_msecs_t estimate = ((elapsed / (page+1)) * pages); | ||
| 719 | + mi_msecs_t estimate = ((elapsed / (page==0 ? 1 : page)) * pages); | ||
| 716 | 720 | if (estimate > 2*max_msecs) { // seems like we are going to timeout, break | |
| 717 | 721 | elapsed = max_msecs + 1; | |
| 718 | 722 | } | |
| Back | FazBrowse Home | New Git URL |
0 commit comments