From: Takashi Iwai <tiwai@suse.de>
Subject: firmware: don't spew errors in normal boot
Patch-mainline: TBD
References: bnc#831438, fate#314574

The firmware signature checks are almost useless in the case of normal
boot, especially when no signature is found.

Fix the error code returned in the no-signature case, and avoid the
error messages in the normal boot mode.

Signed-off-by: Takashi Iwai <tiwai@suse.de>

---
 drivers/base/firmware_class.c |    6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

--- a/drivers/base/firmware_class.c
+++ b/drivers/base/firmware_class.c
@@ -327,7 +327,7 @@ static int verify_sig_file(struct firmwa
 
 	file = filp_open(path, O_RDONLY, 0);
 	if (IS_ERR(file))
-		return -ENOKEY;
+		return -ENOENT;
 
 	ret = fw_read_file_contents(file, &sig_data, &sig_size);
 	fput(file);
@@ -364,11 +364,13 @@ static bool fw_get_filesystem_firmware(s
 #ifdef CONFIG_FIRMWARE_SIG
 		snprintf(path, PATH_MAX, "%s/%s.sig", fw_path[i], buf->fw_id);
 		ret = verify_sig_file(buf, path);
+		if (ret == -ENOENT && !sig_enforce)
+			ret = 0;
 		if (ret < 0) {
 			if (ret == -ENOENT)
 				pr_err("Cannot find firmware signature %s\n",
 				       path);
-			else
+			else if (sig_enforce)
 				pr_err("Invalid firmware signature %s\n", path);
 			if (sig_enforce) {
 				vfree(buf->data);
