integrity: Fix __integrity_init_keyring() section mismatch
authorGeert Uytterhoeven <geert@linux-m68k.org>
Mon, 17 Jun 2019 07:44:52 +0000 (09:44 +0200)
committerMimi Zohar <zohar@linux.ibm.com>
Mon, 17 Jun 2019 18:13:20 +0000 (14:13 -0400)
With gcc-4.6.3:

    WARNING: vmlinux.o(.text.unlikely+0x24c64): Section mismatch in reference from the function __integrity_init_keyring() to the function .init.text:set_platform_trusted_keys()
    The function __integrity_init_keyring() references
    the function __init set_platform_trusted_keys().
    This is often because __integrity_init_keyring lacks a __init
    annotation or the annotation of set_platform_trusted_keys is wrong.

Indeed, if the compiler decides not to inline __integrity_init_keyring(),
a warning is issued.

Fix this by adding the missing __init annotation.

Fixes: 9dc92c45177ab70e ("integrity: Define a trusted platform keyring")
Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
Reviewed-by: Nayna Jain <nayna@linux.ibm.com>
Reviewed-by: James Morris <jamorris@linux.microsoft.com>
Signed-off-by: Mimi Zohar <zohar@linux.ibm.com>
security/integrity/digsig.c

index e19c2eb..3786921 100644 (file)
@@ -73,8 +73,9 @@ int integrity_digsig_verify(const unsigned int id, const char *sig, int siglen,
        return -EOPNOTSUPP;
 }
 
-static int __integrity_init_keyring(const unsigned int id, key_perm_t perm,
-                                   struct key_restriction *restriction)
+static int __init __integrity_init_keyring(const unsigned int id,
+                                          key_perm_t perm,
+                                          struct key_restriction *restriction)
 {
        const struct cred *cred = current_cred();
        int err = 0;