On Wed, Nov 24, 2021 at 11:01 AM Rob Landley <rob@xxxxxxxxxxx> 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