| From: Muhammad Usama Anjum <usama.anjum@collabora.com> |
| Subject: selftests: mm: restore settings from only parent process |
| Date: Thu, 14 Mar 2024 14:40:45 +0500 |
| |
| 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: c23ea61726d5 ("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> |
| --- |
| |
| tools/testing/selftests/mm/protection_keys.c | 6 +++++- |
| 1 file changed, 5 insertions(+), 1 deletion(-) |
| |
| --- a/tools/testing/selftests/mm/protection_keys.c~selftests-mm-restore-settings-from-only-parent-process |
| +++ a/tools/testing/selftests/mm/protection_keys.c |
| @@ -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); |
| } |
| _ |