Kernel warns of executable stack
Chris Packham
Chris.Packham at alliedtelesis.co.nz
Thu Apr 23 01:13:59 UTC 2020
Hi,
I'm just in the process of updating our products to Linux v5.6 and one
of them produces a new warning message from the kernel about busybox
(v1.31.1)
kernel: process '/bin/busybox' started with executable stack
The target in question is a mips64 (octeon3). We have other targets
(mips32, armv7, ppc32, ppc64) which don't complain.
Some searching led me to
https://lore.kernel.org/lkml/20191208171918.GC19716@avx2/
Which suggests I should be filing a bug report with the vendor so here
I am.
Here's some readelf output from the binary
$ readelf -l output/mips64/busybox/new/install/bin/busybox
Elf file type is EXEC (Executable file)
Entry point 0x120006c80
There are 8 program headers, starting at offset 64
Program Headers:
Type Offset VirtAddr PhysAddr
FileSiz MemSiz Flags Align
PHDR 0x0000000000000040 0x0000000120000040 0x0000000120000040
0x00000000000001c0 0x00000000000001c0 R 0x8
INTERP 0x00000000000a890c 0x00000001200a890c 0x00000001200a890c
0x000000000000000f 0x000000000000000f R 0x1
[Requesting program interpreter: /lib64/ld.so.1]
ABIFLAGS 0x0000000000000200 0x0000000120000200 0x0000000120000200
0x0000000000000018 0x0000000000000018 R 0x8
LOAD 0x0000000000000000 0x0000000120000000 0x0000000120000000
0x00000000000a8940 0x00000000000a8940 R E 0x10000
LOAD 0x00000000000a9000 0x00000001200b9000 0x00000001200b9000
0x0000000000002ff0 0x0000000000003810 RW 0x10000
DYNAMIC 0x0000000000002dd8 0x0000000120002dd8 0x0000000120002dd8
0x00000000000001e0 0x00000000000001e0 R 0x8
NOTE 0x00000000000a8920 0x00000001200a8920 0x00000001200a8920
0x0000000000000020 0x0000000000000020 R 0x4
NULL 0x0000000000000000 0x0000000000000000 0x0000000000000000
0x0000000000000000 0x0000000000000000 0x8
Section to Segment mapping:
Segment Sections...
00
01 .interp
02 .MIPS.abiflags
03 .MIPS.abiflags .MIPS.options .dynamic .hash .dynsym .dynstr .gnu.version .gnu.version_r .init .text .MIPS.stubs .fini .rodata .interp .eh_frame .note.ABI-tag
04 .ctors .dtors .data.rel.ro .data .rld_map .got .sdata .sbss .bss
05 .dynamic
06 .note.ABI-tag
07
And for comparison here's a mips32 one
$ readelf -l output/mips32r2/busybox/new/install/bin/busybox
Elf file type is EXEC (Executable file)
Entry point 0x403840
There are 9 program headers, starting at offset 52
Program Headers:
Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align
PHDR 0x000034 0x00400034 0x00400034 0x00120 0x00120 R 0x4
INTERP 0x000154 0x00400154 0x00400154 0x0000d 0x0000d R 0x1
[Requesting program interpreter: /lib/ld.so.1]
ABIFLAGS 0x000188 0x00400188 0x00400188 0x00018 0x00018 R 0x8
REGINFO 0x0001a0 0x004001a0 0x004001a0 0x00018 0x00018 R 0x4
LOAD 0x000000 0x00400000 0x00400000 0x8949c 0x8949c R E 0x10000
LOAD 0x08949c 0x0049949c 0x0049949c 0x01138 0x01824 RW 0x10000
DYNAMIC 0x0001b8 0x004001b8 0x004001b8 0x000f0 0x000f0 R 0x4
NOTE 0x000164 0x00400164 0x00400164 0x00020 0x00020 R 0x4
NULL 0x000000 0x00000000 0x00000000 0x00000 0x00000 0x4
Section to Segment mapping:
Segment Sections...
00
01 .interp
02 .MIPS.abiflags
03 .reginfo
04 .interp .note.ABI-tag .MIPS.abiflags .reginfo .dynamic .hash .dynsym .dynstr .gnu.version .gnu.version_r .init .text .MIPS.stubs .fini .rodata .eh_frame
05 .ctors .dtors .data.rel.ro .data .rld_map .got .sdata .sbss .bss
06 .dynamic
07 .note.ABI-tag
08
There's nothing that really sticks out to me as different.
Can anyone shed some light on this?
Regards,
Chris
More information about the busybox
mailing list