diff mbox series

[v4,2/3] vmlinux: Avoid weak reference to notes section

Message ID 20240415162041.2491523-7-ardb+git@google.com (mailing list archive)
State New, archived
Headers show
Series kbuild: Avoid weak external linkage where possible | expand

Commit Message

Ard Biesheuvel April 15, 2024, 4:20 p.m. UTC
From: Ard Biesheuvel <ardb@kernel.org>

Weak references are references that are permitted to remain unsatisfied
in the final link. This means they cannot be implemented using place
relative relocations, resulting in GOT entries when using position
independent code generation.

The notes section should always exist, so the weak annotations can be
omitted.

Acked-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
---
 kernel/ksysfs.c | 4 ++--
 lib/buildid.c   | 4 ++--
 2 files changed, 4 insertions(+), 4 deletions(-)

Comments

Masahiro Yamada April 20, 2024, 1:42 p.m. UTC | #1
On Tue, Apr 16, 2024 at 1:20 AM Ard Biesheuvel <ardb+git@google.com> wrote:
>
> From: Ard Biesheuvel <ardb@kernel.org>
>
> Weak references are references that are permitted to remain unsatisfied
> in the final link. This means they cannot be implemented using place
> relative relocations, resulting in GOT entries when using position
> independent code generation.
>
> The notes section should always exist, so the weak annotations can be
> omitted.
>
> Acked-by: Arnd Bergmann <arnd@arndb.de>
> Signed-off-by: Ard Biesheuvel <ardb@kernel.org>


Applied to linux-kbuild.
Thanks.




> ---
>  kernel/ksysfs.c | 4 ++--
>  lib/buildid.c   | 4 ++--
>  2 files changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/kernel/ksysfs.c b/kernel/ksysfs.c
> index 495b69a71a5d..07fb5987b42b 100644
> --- a/kernel/ksysfs.c
> +++ b/kernel/ksysfs.c
> @@ -228,8 +228,8 @@ KERNEL_ATTR_RW(rcu_normal);
>  /*
>   * Make /sys/kernel/notes give the raw contents of our kernel .notes section.
>   */
> -extern const void __start_notes __weak;
> -extern const void __stop_notes __weak;
> +extern const void __start_notes;
> +extern const void __stop_notes;
>  #define        notes_size (&__stop_notes - &__start_notes)
>
>  static ssize_t notes_read(struct file *filp, struct kobject *kobj,
> diff --git a/lib/buildid.c b/lib/buildid.c
> index 898301b49eb6..7954dd92e36c 100644
> --- a/lib/buildid.c
> +++ b/lib/buildid.c
> @@ -182,8 +182,8 @@ unsigned char vmlinux_build_id[BUILD_ID_SIZE_MAX] __ro_after_init;
>   */
>  void __init init_vmlinux_build_id(void)
>  {
> -       extern const void __start_notes __weak;
> -       extern const void __stop_notes __weak;
> +       extern const void __start_notes;
> +       extern const void __stop_notes;
>         unsigned int size = &__stop_notes - &__start_notes;
>
>         build_id_parse_buf(&__start_notes, vmlinux_build_id, size);
> --
> 2.44.0.683.g7961c838ac-goog
>
>
diff mbox series

Patch

diff --git a/kernel/ksysfs.c b/kernel/ksysfs.c
index 495b69a71a5d..07fb5987b42b 100644
--- a/kernel/ksysfs.c
+++ b/kernel/ksysfs.c
@@ -228,8 +228,8 @@  KERNEL_ATTR_RW(rcu_normal);
 /*
  * Make /sys/kernel/notes give the raw contents of our kernel .notes section.
  */
-extern const void __start_notes __weak;
-extern const void __stop_notes __weak;
+extern const void __start_notes;
+extern const void __stop_notes;
 #define	notes_size (&__stop_notes - &__start_notes)
 
 static ssize_t notes_read(struct file *filp, struct kobject *kobj,
diff --git a/lib/buildid.c b/lib/buildid.c
index 898301b49eb6..7954dd92e36c 100644
--- a/lib/buildid.c
+++ b/lib/buildid.c
@@ -182,8 +182,8 @@  unsigned char vmlinux_build_id[BUILD_ID_SIZE_MAX] __ro_after_init;
  */
 void __init init_vmlinux_build_id(void)
 {
-	extern const void __start_notes __weak;
-	extern const void __stop_notes __weak;
+	extern const void __start_notes;
+	extern const void __stop_notes;
 	unsigned int size = &__stop_notes - &__start_notes;
 
 	build_id_parse_buf(&__start_notes, vmlinux_build_id, size);