• Ryan Roberts's avatar
    selftests/mm: make migration test robust to failure · 00030332
    Ryan Roberts authored
    The `migration` test currently has a number of robustness problems that
    cause it to hang and leak resources.
    
    Timeout: There are 3 tests, which each previously ran for 60 seconds. 
    However, the timeout in mm/settings for a single test binary was set to 45
    seconds.  So when run using run_kselftest.sh, the top level timeout would
    trigger before the test binary was finished.  Solve this by meeting in the
    middle; each of the 3 tests now runs for 20 seconds (for a total of 60),
    and the top level timeout is set to 90 seconds.
    
    Leaking child processes: the `shared_anon` test fork()s some children but
    then an ASSERT() fires before the test kills those children.  The assert
    causes immediate exit of the parent and leaking of the children. 
    Furthermore, if run using the run_kselftest.sh wrapper, the wrapper would
    get stuck waiting for those children to exit, which never happens.  Solve
    this by setting the "parent death signal" to SIGHUP in the child, so that
    the child is killed automatically if the parent dies.
    
    With these changes, the test binary now runs to completion on arm64, with
    2 tests passing and the `shared_anon` test failing.
    
    Link: https://lkml.kernel.org/r/20230724082522.1202616-7-ryan.roberts@arm.comSigned-off-by: default avatarRyan Roberts <ryan.roberts@arm.com>
    Reviewed-by: default avatarDavid Hildenbrand <david@redhat.com>
    Cc: Florent Revest <revest@chromium.org>
    Cc: Jérôme Glisse <jglisse@redhat.com>
    Cc: John Hubbard <jhubbard@nvidia.com>
    Cc: Mark Brown <broonie@kernel.org>
    Cc: Peter Xu <peterx@redhat.com>
    Cc: Shuah Khan <shuah@kernel.org>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    00030332
settings 11 Bytes