]> www.infradead.org Git - users/hch/misc.git/commitdiff
test_firmware: modify custom fallback tests to use unique files
authorLuis R. Rodriguez <mcgrof@kernel.org>
Sat, 10 Mar 2018 14:14:58 +0000 (06:14 -0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 20 Mar 2018 08:28:47 +0000 (09:28 +0100)
Users of the custom firmware fallback interface is are not supposed to
use the firmware cache interface, this can happen if for instance the
one of the APIs which use the firmware cache is used first with one
firmware file and then the request_firmware_nowait(uevent=false) API
is used with the same file.

We'll soon become strict about this on the firmware interface to reject
such calls later, so correct the test scripts to avoid such uses as well.
We address this on the tests scripts by simply using unique names when
testing the custom fallback interface.

Signed-off-by: Luis R. Rodriguez <mcgrof@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
tools/testing/selftests/firmware/fw_fallback.sh
tools/testing/selftests/firmware/fw_filesystem.sh
tools/testing/selftests/firmware/fw_lib.sh

index 9337a0328627e7fb73219a254cdc5a807936c3b9..8e2e34a2ca696148ed875f41050c3f492888647c 100755 (executable)
@@ -238,8 +238,10 @@ run_sysfs_main_tests()
 
 run_sysfs_custom_load_tests()
 {
-       if load_fw_custom "$NAME" "$FW" ; then
-               if ! diff -q "$FW" /dev/test_firmware >/dev/null ; then
+       RANDOM_FILE_PATH=$(setup_random_file)
+       RANDOM_FILE="$(basename $RANDOM_FILE_PATH)"
+       if load_fw_custom "$RANDOM_FILE" "$RANDOM_FILE_PATH" ; then
+               if ! diff -q "$RANDOM_FILE_PATH" /dev/test_firmware >/dev/null ; then
                        echo "$0: firmware was not loaded" >&2
                        exit 1
                else
@@ -247,8 +249,10 @@ run_sysfs_custom_load_tests()
                fi
        fi
 
-       if load_fw_custom "$NAME" "$FW" ; then
-               if ! diff -q "$FW" /dev/test_firmware >/dev/null ; then
+       RANDOM_FILE_PATH=$(setup_random_file)
+       RANDOM_FILE="$(basename $RANDOM_FILE_PATH)"
+       if load_fw_custom "$RANDOM_FILE" "$RANDOM_FILE_PATH" ; then
+               if ! diff -q "$RANDOM_FILE_PATH" /dev/test_firmware >/dev/null ; then
                        echo "$0: firmware was not loaded" >&2
                        exit 1
                else
@@ -256,8 +260,12 @@ run_sysfs_custom_load_tests()
                fi
        fi
 
-       if load_fw_custom_cancel "nope-$NAME" "$FW" ; then
-               if diff -q "$FW" /dev/test_firmware >/dev/null ; then
+       RANDOM_FILE_REAL="$RANDOM_FILE_PATH"
+       FAKE_RANDOM_FILE_PATH=$(setup_random_file_fake)
+       FAKE_RANDOM_FILE="$(basename $FAKE_RANDOM_FILE_PATH)"
+
+       if load_fw_custom_cancel "$FAKE_RANDOM_FILE" "$RANDOM_FILE_REAL" ; then
+               if diff -q "$RANDOM_FILE_PATH" /dev/test_firmware >/dev/null ; then
                        echo "$0: firmware was expected to be cancelled" >&2
                        exit 1
                else
index 7f47877fa7fa3a01b7be52f8939a2e3ff4204de2..6452d2129cd9d41e6767327cb8ca8448740039db 100755 (executable)
@@ -230,10 +230,13 @@ test_wait_and_cancel_custom_load()
 test_request_firmware_nowait_custom_nofile()
 {
        echo -n "Batched request_firmware_nowait(uevent=false) nofile try #$1: "
+       config_reset
        config_unset_uevent
-       config_set_name nope-test-firmware.bin
+       RANDOM_FILE_PATH=$(setup_random_file_fake)
+       RANDOM_FILE="$(basename $RANDOM_FILE_PATH)"
+       config_set_name $RANDOM_FILE
        config_trigger_async &
-       test_wait_and_cancel_custom_load nope-test-firmware.bin
+       test_wait_and_cancel_custom_load $RANDOM_FILE
        wait
        release_all_firmware
        echo "OK"
@@ -271,7 +274,11 @@ test_request_firmware_nowait_uevent()
 test_request_firmware_nowait_custom()
 {
        echo -n "Batched request_firmware_nowait(uevent=false) try #$1: "
+       config_reset
        config_unset_uevent
+       RANDOM_FILE_PATH=$(setup_random_file)
+       RANDOM_FILE="$(basename $RANDOM_FILE_PATH)"
+       config_set_name $RANDOM_FILE
        config_trigger_async
        release_all_firmware
        echo "OK"
index 98dceb847ba02a5ef74837e78133c2fdb1608933..9ea31b57d71a60008430b56a1b1498ed0184ec86 100755 (executable)
@@ -104,6 +104,29 @@ setup_tmp_file()
        fi
 }
 
+__setup_random_file()
+{
+       RANDOM_FILE_PATH="$(mktemp -p $FWPATH)"
+       # mktemp says dry-run -n is unsafe, so...
+       if [[ "$1" = "fake" ]]; then
+               rm -rf $RANDOM_FILE_PATH
+               sync
+       else
+               echo "ABCD0123" >"$RANDOM_FILE_PATH"
+       fi
+       echo $RANDOM_FILE_PATH
+}
+
+setup_random_file()
+{
+       echo $(__setup_random_file)
+}
+
+setup_random_file_fake()
+{
+       echo $(__setup_random_file fake)
+}
+
 proc_set_force_sysfs_fallback()
 {
        if [ -f $FW_FORCE_SYSFS_FALLBACK ]; then