On Wed, Nov 24, 2021 at 11:01 AM Rob Landley rob@landley.net wrote:
On 11/23/21 7:19 AM, Arnd Bergmann wrote:
These happen with any compiler version, someone needs to write the correct entry code for clone3 and hook up futex_waitv().
I did a naieve "add them both to the .tbl" patch and the result booted to a shell prompt, but that doesn't mean much. What arch-specific entry code does clone3 need here? The SYSCALL_DEFINE2(clone3) in kernel/fork.c seems reasonably straightforward? (Unlike the #ifdef stack around the previous clone...)
I forget the exact issue, but I can see that 4 out of the 13 architectures that set __ARCH_WANT_SYS_CLONE3 provide a custom version: arc, m68k, mips and parisc. Have a look at what those do to see if you need the same changes.
include/linux/sh_intc.h:100:63: warning: division 'sizeof (void *) / sizeof (void)' does not compute the number of array elements
These are old bugs, they show up in any kernel version with gcc-8 or higher.
I looked at trying to fix that but it seems to be a compiler bug. Gcc is warning about an ? : else case that's dead code eliminated. It's already GOT a test protecting it from being evaluated...
I wouldn't call it a bug in the compiler, as there is no definite correct ordering between dead-code-elimination and warning generation. IIRC I fixed a bunch of these on other architectures, and those did turn out to be actual code issues that would go unnoticed otherwise.
fs/mpage.c:336:1: warning: the frame size of 1092 bytes is larger than
I see these going back to gcc-6, it looks like this is caused by CONFIG_PAGE_SIZE_64KB.
In which case the stack size is going to be 64k as well?
No, the stack is still 4KB or 8KB, depending on CONFIG_4KSTACKS, it gets allocated using
stack = kmem_cache_alloc_node(thread_stack_cache, THREADINFO_GFP, node);
from a THREAD_SIZE-sized naturally-aligned kmem cache in this case. Using 1KB of stack space is definitely a red flag that something is going wrong. This could be a bug in kernel code, in the compiler, or in the combination of the two.
Arnd