]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/commitdiff
selftests/efivarfs: clean up test files from test_create*()
authorPo-Hsu Lin <po-hsu.lin@canonical.com>
Fri, 3 Jan 2020 10:52:00 +0000 (11:52 +0100)
committerMarcelo Henrique Cerri <marcelo.cerri@canonical.com>
Fri, 17 Jan 2020 17:23:07 +0000 (14:23 -0300)
BugLink: https://bugs.launchpad.net/bugs/1809704
Test files created by test_create() and test_create_empty() tests will
stay in the $efivarfs_mount directory until the system was rebooted.

When the tester tries to run this efivarfs test again on the same
system, the immutable characteristics in that directory will cause some
"Operation not permitted" noises, and a false-positve test result as the
file was created in previous run.
    --------------------
    running test_create
    --------------------
    ./efivarfs.sh: line 59: /sys/firmware/efi/efivars/test_create-210be57c-9849-4fc7-a635-e6382d1aec27: Operation not permitted
      [PASS]
    --------------------
    running test_create_empty
    --------------------
    ./efivarfs.sh: line 78: /sys/firmware/efi/efivars/test_create_empty-210be57c-9849-4fc7-a635-e6382d1aec27: Operation not permitted
     [PASS]
    --------------------

Create a file_cleanup() to remove those test files in the end of each
test to solve this issue.

For the test_create_read, we can move the clean up task to the end of
the test to ensure the system is clean.

Also, use this function to replace the existing file removal code.

Signed-off-by: Po-Hsu Lin <po-hsu.lin@canonical.com>
Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
(backported from commit dff6d2ae56d0056261e2f7b19c4b96b86b893cd8)
[PHLin: fuzzy adjustment]
Signed-off-by: Po-Hsu Lin <po-hsu.lin@canonical.com>
Acked-by: Colin Ian King <colin.king@canonical.com>
Acked-by: Kleber Sacilotto de Souza <kleber.souza@canonical.com>
Signed-off-by: Kleber Sacilotto de Souza <kleber.souza@canonical.com>
tools/testing/selftests/efivarfs/efivarfs.sh

index a47029a799d2c0b418c0b87c6eb9b250e3f8c80b..a90f394f9aa90c45c15c4a2c83d742421b9c187a 100755 (executable)
@@ -7,6 +7,12 @@ test_guid=210be57c-9849-4fc7-a635-e6382d1aec27
 # Kselftest framework requirement - SKIP code is 4.
 ksft_skip=4
 
+file_cleanup()
+{
+       chattr -i $1
+       rm -f $1
+}
+
 check_prereqs()
 {
        local msg="skip all tests:"
@@ -58,8 +64,10 @@ test_create()
 
        if [ $(stat -c %s $file) -ne 5 ]; then
                echo "$file has invalid size" >&2
+               file_cleanup $file
                exit 1
        fi
+       file_cleanup $file
 }
 
 test_create_empty()
@@ -72,12 +80,14 @@ test_create_empty()
                echo "$file can not be created without writing" >&2
                exit 1
        fi
+       file_cleanup $file
 }
 
 test_create_read()
 {
        local file=$efivarfs_mount/$FUNCNAME-$test_guid
        ./create-read $file
+       file_cleanup $file
 }
 
 test_delete()
@@ -92,11 +102,7 @@ test_delete()
                exit 1
        fi
 
-       rm $file 2>/dev/null
-       if [ $? -ne 0 ]; then
-               chattr -i $file
-               rm $file
-       fi
+       file_cleanup $file
 
        if [ -e $file ]; then
                echo "$file couldn't be deleted" >&2
@@ -150,11 +156,7 @@ test_valid_filenames()
                        echo "$file could not be created" >&2
                        ret=1
                else
-                       rm $file 2>/dev/null
-                       if [ $? -ne 0 ]; then
-                               chattr -i $file
-                               rm $file
-                       fi
+                       file_cleanup $file
                fi
        done
 
@@ -187,11 +189,7 @@ test_invalid_filenames()
 
                if [ -e $file ]; then
                        echo "Creating $file should have failed" >&2
-                       rm $file 2>/dev/null
-                       if [ $? -ne 0 ]; then
-                               chattr -i $file
-                               rm $file
-                       fi
+                       file_cleanup $file
                        ret=1
                fi
        done