Patchwork [1/1] net/core: work around section mismatch warning for ptp_classifier

login
register
mail settings
Submitter Gerald Schaefer
Date April 15, 2019, 5:14 p.m.
Message ID <20190415171445.15534-2-gerald.schaefer@de.ibm.com>
Download mbox | patch
Permalink /patch/773499/
State New
Headers show

Comments

Gerald Schaefer - April 15, 2019, 5:14 p.m.
From: Ard Biesheuvel <ard.biesheuvel@linaro.org>

The routine ptp_classifier_init() uses an initializer for an
automatic struct type variable which refers to an __initdata
symbol. This is perfectly legal, but may trigger a section
mismatch warning when running the compiler in -fpic mode, due
to the fact that the initializer may be emitted into an anonymous
.data section thats lack the __init annotation. So work around it
by using assignments instead.

Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Signed-off-by: Gerald Schaefer <gerald.schaefer@de.ibm.com>
---
 net/core/ptp_classifier.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)
David Miller - April 17, 2019, 3:46 a.m.
From: Gerald Schaefer <gerald.schaefer@de.ibm.com>
Date: Mon, 15 Apr 2019 19:14:45 +0200

> From: Ard Biesheuvel <ard.biesheuvel@linaro.org>
> 
> The routine ptp_classifier_init() uses an initializer for an
> automatic struct type variable which refers to an __initdata
> symbol. This is perfectly legal, but may trigger a section
> mismatch warning when running the compiler in -fpic mode, due
> to the fact that the initializer may be emitted into an anonymous
> .data section thats lack the __init annotation. So work around it
> by using assignments instead.
> 
> Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
> Signed-off-by: Gerald Schaefer <gerald.schaefer@de.ibm.com>

Applied.

Patch

diff --git a/net/core/ptp_classifier.c b/net/core/ptp_classifier.c
index 703cf76aa7c2..7109c168b5e0 100644
--- a/net/core/ptp_classifier.c
+++ b/net/core/ptp_classifier.c
@@ -185,9 +185,10 @@  void __init ptp_classifier_init(void)
 		{ 0x16,  0,  0, 0x00000000 },
 		{ 0x06,  0,  0, 0x00000000 },
 	};
-	struct sock_fprog_kern ptp_prog = {
-		.len = ARRAY_SIZE(ptp_filter), .filter = ptp_filter,
-	};
+	struct sock_fprog_kern ptp_prog;
+
+	ptp_prog.len = ARRAY_SIZE(ptp_filter);
+	ptp_prog.filter = ptp_filter;
 
 	BUG_ON(bpf_prog_create(&ptp_insns, &ptp_prog));
 }