certs: don't try to update blacklist keys
authorThomas Weißschuh <linux@weissschuh.net>
Mon, 9 Jan 2023 23:59:43 +0000 (23:59 +0000)
committerJarkko Sakkinen <jarkko@kernel.org>
Mon, 13 Feb 2023 08:11:20 +0000 (10:11 +0200)
When the same key is blacklisted repeatedly logging at pr_err() level is
excessive as no functionality is impaired.
When these duplicates are provided by buggy firmware there is nothing
the user can do to fix the situation.
Instead of spamming the bootlog with errors we use a warning that can
still be seen by OEMs when testing their firmware.

Link: https://lore.kernel.org/all/c8c65713-5cda-43ad-8018-20f2e32e4432@t-8ch.de/
Link: https://lore.kernel.org/all/20221104014704.3469-1-linux@weissschuh.net/
Signed-off-by: Thomas Weißschuh <linux@weissschuh.net>
Tested-by: Paul Menzel <pmenzel@molgen.mpg.de>
Reviewed-by: Jarkko Sakkinen <jarkko@kernel.org>
Signed-off-by: Jarkko Sakkinen <jarkko@kernel.org>
certs/blacklist.c

index 6e260c4b6a1932a635a7f057b3c9c1443cf48323..675dd7a8f07abc150838d051d440e4d5f877a3c0 100644 (file)
@@ -183,16 +183,19 @@ static int mark_raw_hash_blacklisted(const char *hash)
 {
        key_ref_t key;
 
-       key = key_create_or_update(make_key_ref(blacklist_keyring, true),
-                                  "blacklist",
-                                  hash,
-                                  NULL,
-                                  0,
-                                  BLACKLIST_KEY_PERM,
-                                  KEY_ALLOC_NOT_IN_QUOTA |
-                                  KEY_ALLOC_BUILT_IN);
+       key = key_create(make_key_ref(blacklist_keyring, true),
+                        "blacklist",
+                        hash,
+                        NULL,
+                        0,
+                        BLACKLIST_KEY_PERM,
+                        KEY_ALLOC_NOT_IN_QUOTA |
+                        KEY_ALLOC_BUILT_IN);
        if (IS_ERR(key)) {
-               pr_err("Problem blacklisting hash %s: %pe\n", hash, key);
+               if (PTR_ERR(key) == -EEXIST)
+                       pr_warn("Duplicate blacklisted hash %s\n", hash);
+               else
+                       pr_err("Problem blacklisting hash %s: %pe\n", hash, key);
                return PTR_ERR(key);
        }
        return 0;