selftests: mm: restore settings from only parent process

The atexit() is called from parent process as well as forked processes. 
Hence the child restores the settings at exit while the parent is still
executing.  Fix this by checking pid of atexit() calling process and only
restore THP number from parent process.

Link: https://lkml.kernel.org/r/20240314094045.157149-1-usama.anjum@collabora.com
Fixes: c23ea61726 ("selftests/mm: protection_keys: save/restore nr_hugepages settings")
Signed-off-by: Muhammad Usama Anjum <usama.anjum@collabora.com>
Tested-by: Joey Gouly <joey.gouly@arm.com>
Cc: Shuah Khan <shuah@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
Muhammad Usama Anjum 2024-03-14 14:40:45 +05:00 committed by Andrew Morton
parent 950bf45d3b
commit c52eb6db7b
1 changed files with 5 additions and 1 deletions

View File

@ -1745,9 +1745,12 @@ void pkey_setup_shadow(void)
shadow_pkey_reg = __read_pkey_reg();
}
pid_t parent_pid;
void restore_settings_atexit(void)
{
cat_into_file(buf, "/proc/sys/vm/nr_hugepages");
if (parent_pid == getpid())
cat_into_file(buf, "/proc/sys/vm/nr_hugepages");
}
void save_settings(void)
@ -1773,6 +1776,7 @@ void save_settings(void)
exit(__LINE__);
}
parent_pid = getpid();
atexit(restore_settings_atexit);
close(fd);
}