Messages in this thread | | | From | Alistair Popple <> | Subject | Re: [RESEND PATCH v7 05/10] selftests/mm/kugepaged: Restore thp settings at exit | Date | Thu, 23 Nov 2023 16:54:41 +1100 |
| |
Ryan Roberts <ryan.roberts@arm.com> writes:
> Previously, the saved thp settings would be restored upon a signal or at > the natural end of the test suite. But there are some tests that > directly call exit() upon failure. In this case, the thp settings were > not being restored, which could then influence other tests. > > Fix this by installing an atexit() handler to do the actual restore. The > signal handler can now just call exit() and the atexit handler is > invoked. > > Signed-off-by: Ryan Roberts <ryan.roberts@arm.com>
Reviewed-by: Alistair Popple <apopple@nvidia.com>
> --- > tools/testing/selftests/mm/khugepaged.c | 17 +++++++++++------ > 1 file changed, 11 insertions(+), 6 deletions(-) > > diff --git a/tools/testing/selftests/mm/khugepaged.c b/tools/testing/selftests/mm/khugepaged.c > index 030667cb5533..fc47a1c4944c 100644 > --- a/tools/testing/selftests/mm/khugepaged.c > +++ b/tools/testing/selftests/mm/khugepaged.c > @@ -374,18 +374,22 @@ static void pop_settings(void) > write_settings(current_settings()); > } > > -static void restore_settings(int sig) > +static void restore_settings_atexit(void) > { > if (skip_settings_restore) > - goto out; > + return; > > printf("Restore THP and khugepaged settings..."); > write_settings(&saved_settings); > success("OK"); > - if (sig) > - exit(EXIT_FAILURE); > -out: > - exit(exit_status); > + > + skip_settings_restore = true; > +} > + > +static void restore_settings(int sig) > +{ > + /* exit() will invoke the restore_settings_atexit handler. */ > + exit(sig ? EXIT_FAILURE : exit_status); > } > > static void save_settings(void) > @@ -415,6 +419,7 @@ static void save_settings(void) > > success("OK"); > > + atexit(restore_settings_atexit); > signal(SIGTERM, restore_settings); > signal(SIGINT, restore_settings); > signal(SIGHUP, restore_settings);
| |