Re: [PATCH] m68k: add missing SOFTIRQENTRY_TEXT linker section

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Greg,

CC mingo, Hiramatsu-san, linux-arch, lkml

On Tue, Nov 14, 2017 at 7:04 AM, Greg Ungerer <gerg@xxxxxxxxxxxxxx> wrote:
> Commit be7635e7287e ("arch, ftrace: for KASAN put hard/soft IRQ entries
> into separate sections") added a new linker section, SOFTIRQENTRY_TEXT,
> to the linker scripts for most architectures. It didn't add it to any of
> the linker scripts for the m68k architecture. This was not really a problem
> because it is only defined if either of CONFIG_FUNCTION_GRAPH_TRACER or
> CONFIG_KASAN are enabled - which can never be true for m68k.
>
> However commit 229a71860547 ("irq: Make the irqentry text section
> unconditional") means that SOFTIRQENTRY_TEXT is now always defined. So on
> m68k we now end up with a separate ELF section for .softirqentry.text
> instead of it being part of the .text section. On some m68k targets in some

Nice catch!

+10 other architectures also don't have the section.

> configurations this can also cause a fatal link error:
>
>   LD      vmlinux
> /usr/local/bin/../m68k-uclinux/bin/ld.real: section .softirqentry.text loaded at [0000000010de10c0,0000000010de12dd] overlaps section .rodata loaded at [0000000010de10c0,0000000010e0fd67]

How does it cause the overlap?

For me, "readelf -S vmlinux" gives:

There are 21 section headers, starting at offset 0x524850:

Section Headers:
  [Nr] Name              Type            Addr     Off    Size   ES Flg Lk Inf Al
  [ 0]                   NULL            00000000 000000 000000 00      0   0  0
  [ 1] .text             PROGBITS        00001000 001000 2dacb4 00  AX  0   0  4
  [ 2] .softirqentry.tex PROGBITS        002dbcb4 2dbcb4 0001a0 00  AX  0   0  2
  [ 3] __ex_table        PROGBITS        002dbe60 2dbe60 0027f0 00   A  0   0  4
  [ 4] .rodata           PROGBITS        002df000 2df000 09ee20 00  WA  0   0 16
  [ 5] __ksymtab         PROGBITS        0037de20 37de20 006538 00   A  0   0  2
  [ 6] __ksymtab_gpl     PROGBITS        00384358 384358 003f08 00   A  0   0  2
  [ 7] __ksymtab_strings PROGBITS        00388260 388260 01747d 00   A  0   0  1
  [ 8] __param           PROGBITS        0039f6e0 39f6e0 000924 00   A  0   0  4
  [ 9] __modver          PROGBITS        003a0004 3a0004 000ffc 00   A  0   0  2
  [10] .data             PROGBITS        003a1000 3a1000 021c20 00  WA  0   0 32
  [11] .bss              NOBITS          003c2c20 3c2c20 02b2fc 00  WA  0   0 16
  [12] .init.text        PROGBITS        003ee000 3c4000 01a4b2 00  AX  0   0  4
  [13] .init.data        PROGBITS        004084b4 3de4b4 008180 00  WA  0   0  4
  [14] .m68k_fixup       PROGBITS        00410634 3e6634 001140 00  WA  0   0  1
  [15] .notes            NOTE            00411774 3e7774 000024 00   A  0   0  4
  [16] .init_end         NOBITS          00411798 3e7798 000868 00  WA  0   0  1
  [17] .comment          PROGBITS        00000000 3e7798 000039 01  MS  0   0  1
  [18] .shstrtab         STRTAB          00000000 524791 0000bd 00      0   0  1
  [19] .symtab           SYMTAB          00000000 3e77d4 0a66e0 10
20 32238  4
  [20] .strtab           STRTAB          00000000 48deb4 0968dd 00      0   0  1
Key to Flags:
  W (write), A (alloc), X (execute), M (merge), S (strings)
  I (info), L (link order), G (group), T (TLS), E (exclude), x (unknown)
  O (extra OS processing required) o (OS specific), p (processor specific)

> To fix add in the missing SOFTIRQENTRY_TEXT section into the m68k linker
> scripts. I noticed that m68k is also missing the IRQENTRY_TEXT section,
> so this patch also adds an entry for that too.
>
> Signed-off-by: Greg Ungerer <gerg@xxxxxxxxxxxxxx>
> ---
>  arch/m68k/kernel/vmlinux-nommu.lds | 2 ++
>  arch/m68k/kernel/vmlinux-std.lds   | 2 ++
>  arch/m68k/kernel/vmlinux-sun3.lds  | 2 ++
>  3 files changed, 6 insertions(+)
>
> diff --git a/arch/m68k/kernel/vmlinux-nommu.lds b/arch/m68k/kernel/vmlinux-nommu.lds
> index 3aa571a..cf6edda 100644
> --- a/arch/m68k/kernel/vmlinux-nommu.lds
> +++ b/arch/m68k/kernel/vmlinux-nommu.lds
> @@ -45,6 +45,8 @@ SECTIONS {
>         .text : {
>                 HEAD_TEXT
>                 TEXT_TEXT
> +               IRQENTRY_TEXT
> +               SOFTIRQENTRY_TEXT
>                 SCHED_TEXT
>                 CPUIDLE_TEXT
>                 LOCK_TEXT
> diff --git a/arch/m68k/kernel/vmlinux-std.lds b/arch/m68k/kernel/vmlinux-std.lds
> index 89172b8..625a578 100644
> --- a/arch/m68k/kernel/vmlinux-std.lds
> +++ b/arch/m68k/kernel/vmlinux-std.lds
> @@ -16,6 +16,8 @@ SECTIONS
>    .text : {
>         HEAD_TEXT
>         TEXT_TEXT
> +       IRQENTRY_TEXT
> +       SOFTIRQENTRY_TEXT
>         SCHED_TEXT
>         CPUIDLE_TEXT
>         LOCK_TEXT
> diff --git a/arch/m68k/kernel/vmlinux-sun3.lds b/arch/m68k/kernel/vmlinux-sun3.lds
> index 293990e..9868270 100644
> --- a/arch/m68k/kernel/vmlinux-sun3.lds
> +++ b/arch/m68k/kernel/vmlinux-sun3.lds
> @@ -16,6 +16,8 @@ SECTIONS
>    .text : {
>         HEAD_TEXT
>         TEXT_TEXT
> +       IRQENTRY_TEXT
> +       SOFTIRQENTRY_TEXT
>         SCHED_TEXT
>         CPUIDLE_TEXT
>         LOCK_TEXT

Gr{oetje,eeting}s,

                        Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@xxxxxxxxxxxxxx

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



[Index of Archives]     [Linux Kernel]     [Kernel Newbies]     [x86 Platform Driver]     [Netdev]     [Linux Wireless]     [Netfilter]     [Bugtraq]     [Linux Filesystems]     [Yosemite Discussion]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Device Mapper]

  Powered by Linux