Merge tag 'tpmdd-next-v5.10' of git://git.kernel.org/pub/scm/linux/kernel/git/jarkko...
[linux-2.6-microblaze.git] / lib / test_firmware.c
index 0c7fbcf..06c9550 100644 (file)
@@ -26,6 +26,8 @@
 #include <linux/vmalloc.h>
 #include <linux/efi_embedded_fw.h>
 
+MODULE_IMPORT_NS(TEST_FIRMWARE);
+
 #define TEST_FIRMWARE_NAME     "test-firmware.bin"
 #define TEST_FIRMWARE_NUM_REQS 4
 #define TEST_FIRMWARE_BUF_SIZE SZ_1K
@@ -310,27 +312,13 @@ static int test_dev_config_update_bool(const char *buf, size_t size,
        return ret;
 }
 
-static ssize_t
-test_dev_config_show_bool(char *buf,
-                         bool config)
+static ssize_t test_dev_config_show_bool(char *buf, bool val)
 {
-       bool val;
-
-       mutex_lock(&test_fw_mutex);
-       val = config;
-       mutex_unlock(&test_fw_mutex);
-
        return snprintf(buf, PAGE_SIZE, "%d\n", val);
 }
 
-static ssize_t test_dev_config_show_int(char *buf, int cfg)
+static ssize_t test_dev_config_show_int(char *buf, int val)
 {
-       int val;
-
-       mutex_lock(&test_fw_mutex);
-       val = cfg;
-       mutex_unlock(&test_fw_mutex);
-
        return snprintf(buf, PAGE_SIZE, "%d\n", val);
 }
 
@@ -354,14 +342,8 @@ static int test_dev_config_update_u8(const char *buf, size_t size, u8 *cfg)
        return size;
 }
 
-static ssize_t test_dev_config_show_u8(char *buf, u8 cfg)
+static ssize_t test_dev_config_show_u8(char *buf, u8 val)
 {
-       u8 val;
-
-       mutex_lock(&test_fw_mutex);
-       val = cfg;
-       mutex_unlock(&test_fw_mutex);
-
        return snprintf(buf, PAGE_SIZE, "%u\n", val);
 }
 
@@ -509,6 +491,9 @@ out:
 static DEVICE_ATTR_WO(trigger_request);
 
 #ifdef CONFIG_EFI_EMBEDDED_FIRMWARE
+extern struct list_head efi_embedded_fw_list;
+extern bool efi_embedded_fw_checked;
+
 static ssize_t trigger_request_platform_store(struct device *dev,
                                              struct device_attribute *attr,
                                              const char *buf, size_t count)
@@ -521,6 +506,7 @@ static ssize_t trigger_request_platform_store(struct device *dev,
        };
        struct efi_embedded_fw efi_embedded_fw;
        const struct firmware *firmware = NULL;
+       bool saved_efi_embedded_fw_checked;
        char *name;
        int rc;
 
@@ -533,6 +519,8 @@ static ssize_t trigger_request_platform_store(struct device *dev,
        efi_embedded_fw.data = (void *)test_data;
        efi_embedded_fw.length = sizeof(test_data);
        list_add(&efi_embedded_fw.list, &efi_embedded_fw_list);
+       saved_efi_embedded_fw_checked = efi_embedded_fw_checked;
+       efi_embedded_fw_checked = true;
 
        pr_info("loading '%s'\n", name);
        rc = firmware_request_platform(&firmware, name, dev);
@@ -550,6 +538,7 @@ static ssize_t trigger_request_platform_store(struct device *dev,
        rc = count;
 
 out:
+       efi_embedded_fw_checked = saved_efi_embedded_fw_checked;
        release_firmware(firmware);
        list_del(&efi_embedded_fw.list);
        kfree(name);