@@ -111,20 +111,22 @@ static os::PageSizes scan_hugepages() {
111111
112112 os::PageSizes pagesizes;
113113
114- DIR *dir = opendir (sys_hugepages);
115-
116- struct dirent *entry;
117- size_t pagesize;
118- while ((entry = readdir (dir)) != nullptr ) {
119- if (entry->d_type == DT_DIR &&
120- sscanf (entry->d_name , " hugepages-%zukB" , &pagesize) == 1 ) {
121- // The kernel is using kB, hotspot uses bytes
122- // Add each found Large Page Size to page_sizes
123- pagesize *= K;
124- pagesizes.add (pagesize);
114+ DIR* dir = opendir (sys_hugepages);
115+
116+ if (dir != nullptr ) {
117+ struct dirent *entry;
118+ size_t pagesize;
119+ while ((entry = readdir (dir)) != nullptr ) {
120+ if (entry->d_type == DT_DIR &&
121+ sscanf (entry->d_name , " hugepages-%zukB" , &pagesize) == 1 ) {
122+ // The kernel is using kB, hotspot uses bytes
123+ // Add each found Large Page Size to page_sizes
124+ pagesize *= K;
125+ pagesizes.add (pagesize);
126+ }
125127 }
128+ closedir (dir);
126129 }
127- closedir (dir);
128130
129131 return pagesizes;
130132}
@@ -142,11 +144,13 @@ void StaticHugePageSupport::print_on(outputStream* os) {
142144}
143145
144146void StaticHugePageSupport::scan_os () {
145- _pagesizes = scan_hugepages ();
146147 _default_hugepage_size = scan_default_hugepagesize ();
147- assert (_pagesizes.contains (_default_hugepage_size),
148- " Unexpected configuration: default pagesize (" SIZE_FORMAT " ) "
149- " has no associated directory in /sys/kernel/mm/hugepages.." , _default_hugepage_size);
148+ if (_default_hugepage_size > 0 ) {
149+ _pagesizes = scan_hugepages ();
150+ assert (_pagesizes.contains (_default_hugepage_size),
151+ " Unexpected configuration: default pagesize (" SIZE_FORMAT " ) "
152+ " has no associated directory in /sys/kernel/mm/hugepages.." , _default_hugepage_size);
153+ }
150154 _initialized = true ;
151155 LogTarget (Info, pagesize) lt;
152156 if (lt.is_enabled ()) {
0 commit comments