Thread (16 messages) 16 messages, 4 authors, 2016-02-03
STALE3810d

[PATCH 1/3] arm64: efistub: drop __init annotation from handle_kernel_image()

From: Ard Biesheuvel <hidden>
Date: 2016-01-29 09:36:03
Also in: linux-efi

On 28 January 2016 at 23:58, Matt Fleming [off-list ref] wrote:
On Thu, 28 Jan, at 12:07:32PM, Ard Biesheuvel wrote:
quoted
After moving arm64-stub.c to libstub/, all of its sections are emitted
as .init.xxx sections automatically, and the __init annotation of
handle_kernel_image() causes it to end up in .init.init.text, which is
not recognized as an __init section by the linker scripts. So drop the
annotation.

Signed-off-by: Ard Biesheuvel <redacted>
---
 drivers/firmware/efi/libstub/arm64-stub.c | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/drivers/firmware/efi/libstub/arm64-stub.c b/drivers/firmware/efi/libstub/arm64-stub.c
index 78dfbd34b6bf..9e0342745e4f 100644
--- a/drivers/firmware/efi/libstub/arm64-stub.c
+++ b/drivers/firmware/efi/libstub/arm64-stub.c
@@ -13,13 +13,13 @@
 #include <asm/efi.h>
 #include <asm/sections.h>

-efi_status_t __init handle_kernel_image(efi_system_table_t *sys_table_arg,
-                                     unsigned long *image_addr,
-                                     unsigned long *image_size,
-                                     unsigned long *reserve_addr,
-                                     unsigned long *reserve_size,
-                                     unsigned long dram_base,
-                                     efi_loaded_image_t *image)
+efi_status_t handle_kernel_image(efi_system_table_t *sys_table_arg,
+                              unsigned long *image_addr,
+                              unsigned long *image_size,
+                              unsigned long *reserve_addr,
+                              unsigned long *reserve_size,
+                              unsigned long dram_base,
+                              efi_loaded_image_t *image)
 {
      efi_status_t status;
      unsigned long kernel_size, kernel_memsize = 0;
--
2.5.0
Would it make more sense to #undef __init in one of the arm64 efistub
header files? I'm thinking of the case where some poor unsuspecting
developer writes a new function and marks it as __init, and we miss it
during review.
Yes, I can add it to efistub.h, and make sure it gets included in all the files

Should we #undef it and #define it to a string that is easily grep'ed
for, so it is easy to find the explanatory comment that goes along
with it?
E.g.,

#define __init __init_not_supported_in_efi_stub
At least if we do the #undef we can document why __init makes no sense
in the EFI stub, and at the same time automatically fix things up.

An alternative would be to write some Kbuild magic that complains if
it sees __init, but that seems like more work than is reasonable.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help