diff mbox

VSOCK: Drop bogus __init annotation from vsock_init_tables()

Message ID 1366796455-2520-1-git-send-email-geert@linux-m68k.org
State Accepted, archived
Delegated to: David Miller
Headers show

Commit Message

Geert Uytterhoeven April 24, 2013, 9:40 a.m. UTC
If gcc (e.g. 4.1.2) decides not to inline vsock_init_tables(), this will
cause a section mismatch:

WARNING: net/vmw_vsock/vsock.o(.text+0x1bc): Section mismatch in reference from the function __vsock_core_init() to the function .init.text:vsock_init_tables()
The function __vsock_core_init() references
the function __init vsock_init_tables().
This is often because __vsock_core_init lacks a __init
annotation or the annotation of vsock_init_tables is wrong.

This may cause crashes if VSOCKETS=y and VMWARE_VMCI_VSOCKETS=m.

Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
---
 net/vmw_vsock/af_vsock.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

Comments

David Miller April 25, 2013, 8:22 a.m. UTC | #1
From: Geert Uytterhoeven <geert@linux-m68k.org>
Date: Wed, 24 Apr 2013 11:40:55 +0200

> If gcc (e.g. 4.1.2) decides not to inline vsock_init_tables(), this will
> cause a section mismatch:
> 
> WARNING: net/vmw_vsock/vsock.o(.text+0x1bc): Section mismatch in reference from the function __vsock_core_init() to the function .init.text:vsock_init_tables()
> The function __vsock_core_init() references
> the function __init vsock_init_tables().
> This is often because __vsock_core_init lacks a __init
> annotation or the annotation of vsock_init_tables is wrong.
> 
> This may cause crashes if VSOCKETS=y and VMWARE_VMCI_VSOCKETS=m.
> 
> Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>

Applied.
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Geert Uytterhoeven May 2, 2013, 6:54 a.m. UTC | #2
CCing stable, as this patch didn't make it in v3.9.
Mainline commit ID is 22ee3b57c3ff71772b0c4178404b04f5df78d501.

On Wed, Apr 24, 2013 at 11:40 AM, Geert Uytterhoeven
<geert@linux-m68k.org> wrote:
> If gcc (e.g. 4.1.2) decides not to inline vsock_init_tables(), this will
> cause a section mismatch:
>
> WARNING: net/vmw_vsock/vsock.o(.text+0x1bc): Section mismatch in reference from the function __vsock_core_init() to the function .init.text:vsock_init_tables()
> The function __vsock_core_init() references
> the function __init vsock_init_tables().
> This is often because __vsock_core_init lacks a __init
> annotation or the annotation of vsock_init_tables is wrong.
>
> This may cause crashes if VSOCKETS=y and VMWARE_VMCI_VSOCKETS=m.
>
> Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
> ---
>  net/vmw_vsock/af_vsock.c |    2 +-
>  1 files changed, 1 insertions(+), 1 deletions(-)
>
> diff --git a/net/vmw_vsock/af_vsock.c b/net/vmw_vsock/af_vsock.c
> index 7f93e2a..2e330e8 100644
> --- a/net/vmw_vsock/af_vsock.c
> +++ b/net/vmw_vsock/af_vsock.c
> @@ -165,7 +165,7 @@ static struct list_head vsock_bind_table[VSOCK_HASH_SIZE + 1];
>  static struct list_head vsock_connected_table[VSOCK_HASH_SIZE];
>  static DEFINE_SPINLOCK(vsock_table_lock);
>
> -static __init void vsock_init_tables(void)
> +static void vsock_init_tables(void)
>  {
>         int i;
>
> --
> 1.7.0.4

Gr{oetje,eeting}s,

                        Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
                                -- Linus Torvalds
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/net/vmw_vsock/af_vsock.c b/net/vmw_vsock/af_vsock.c
index 7f93e2a..2e330e8 100644
--- a/net/vmw_vsock/af_vsock.c
+++ b/net/vmw_vsock/af_vsock.c
@@ -165,7 +165,7 @@  static struct list_head vsock_bind_table[VSOCK_HASH_SIZE + 1];
 static struct list_head vsock_connected_table[VSOCK_HASH_SIZE];
 static DEFINE_SPINLOCK(vsock_table_lock);
 
-static __init void vsock_init_tables(void)
+static void vsock_init_tables(void)
 {
 	int i;