aboutsummaryrefslogtreecommitdiffstats
path: root/src/vppinfra/linux
diff options
context:
space:
mode:
authorAndrew Yourtchenko <ayourtch@gmail.com>2022-09-15 11:56:50 +0000
committerDamjan Marion <dmarion@0xa5.net>2022-12-02 13:49:11 +0000
commitea0b890cbfb4a1a1b767516c935395190b546911 (patch)
tree3e14b678dd6adff21e143a63b05a098e4ab4c9f4 /src/vppinfra/linux
parent5163d5981068e49cb26616da6163136c9fafd969 (diff)
vlib: clib_panic if sysconf() can't determine page size on startup
Account for the potential of sysconf() returning -1 if it can not get the page size and make it a fatal error. Coverity: 277313 Type: fix Signed-off-by: Andrew Yourtchenko <ayourtch@gmail.com> Change-Id: I8cae6a35ec2f745c37f1fe6557e5fa66720b4628
Diffstat (limited to 'src/vppinfra/linux')
-rw-r--r--src/vppinfra/linux/mem.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/vppinfra/linux/mem.c b/src/vppinfra/linux/mem.c
index ec3328d4a29..69f4363c8ac 100644
--- a/src/vppinfra/linux/mem.c
+++ b/src/vppinfra/linux/mem.c
@@ -103,6 +103,7 @@ void
clib_mem_main_init ()
{
clib_mem_main_t *mm = &clib_mem_main;
+ long sysconf_page_size;
uword page_size;
void *va;
int fd;
@@ -111,7 +112,12 @@ clib_mem_main_init ()
return;
/* system page size */
- page_size = sysconf (_SC_PAGESIZE);
+ sysconf_page_size = sysconf (_SC_PAGESIZE);
+ if (sysconf_page_size < 0)
+ {
+ clib_panic ("Could not determine the page size");
+ }
+ page_size = sysconf_page_size;
mm->log2_page_sz = min_log2 (page_size);
/* default system hugeppage size */