• Mike Kravetz's avatar
    selftests/memfd: clean up mapping in mfd_fail_write · fda153c8
    Mike Kravetz authored
    Running the memfd script ./run_hugetlbfs_test.sh will often end in error
    as follows:
    
        memfd-hugetlb: CREATE
        memfd-hugetlb: BASIC
        memfd-hugetlb: SEAL-WRITE
        memfd-hugetlb: SEAL-FUTURE-WRITE
        memfd-hugetlb: SEAL-SHRINK
        fallocate(ALLOC) failed: No space left on device
        ./run_hugetlbfs_test.sh: line 60: 166855 Aborted                 (core dumped) ./memfd_test hugetlbfs
        opening: ./mnt/memfd
        fuse: DONE
    
    If no hugetlb pages have been preallocated, run_hugetlbfs_test.sh will
    allocate 'just enough' pages to run the test.  In the SEAL-FUTURE-WRITE
    test the mfd_fail_write routine maps the file, but does not unmap.  As a
    result, two hugetlb pages remain reserved for the mapping.  When the
    fallocate call in the SEAL-SHRINK test attempts allocate all hugetlb
    pages, it is short by the two reserved pages.
    
    Fix by making sure to unmap in mfd_fail_write.
    
    Link: https://lkml.kernel.org/r/20220219004340.56478-1-mike.kravetz@oracle.comSigned-off-by: default avatarMike Kravetz <mike.kravetz@oracle.com>
    Cc: Joel Fernandes <joel@joelfernandes.org>
    Cc: Shuah Khan <shuah@kernel.org>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    fda153c8
memfd_test.c 20.9 KB