2019-06-17 07:46:44

by Geert Uytterhoeven

[permalink] [raw]
Subject: [PATCH] integrity: Fix __integrity_init_keyring() section mismatch

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 <[email protected]>
---
security/integrity/digsig.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/security/integrity/digsig.c b/security/integrity/digsig.c
index 4582bc26770a34a7..868ade3e89702ba7 100644
--- a/security/integrity/digsig.c
+++ b/security/integrity/digsig.c
@@ -69,8 +69,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;
--
2.17.1


2019-06-17 14:07:27

by Nayna Jain

[permalink] [raw]
Subject: Re: [PATCH] integrity: Fix __integrity_init_keyring() section mismatch



On 06/17/2019 03:44 AM, Geert Uytterhoeven wrote:
> 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 <[email protected]>

Thanks for fixing it.

Reviewed-by: Nayna Jain <[email protected]>

Thanks & Regards,
         - Nayna

2019-06-17 18:12:57

by James Morris

[permalink] [raw]
Subject: Re: [PATCH] integrity: Fix __integrity_init_keyring() section mismatch

On Mon, 17 Jun 2019, Geert Uytterhoeven wrote:

> 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 <[email protected]>


Reviewed-by: James Morris <[email protected]>


--
James Morris
<[email protected]>