Re: [uml-devel] trinity commit 23dc478aba breaks syscall "mremap" at a 32 bit user mode linux
Richard Weinberger <[email protected]> Thu, 01 May 2014 14:33:02 +0200
| Newsgroups | org.kernel.vger.trinity,org.infradead.lists.linux-um |
|---|---|
| Message-ID | <[email protected]> |
Am 01.05.2014 12:29, schrieb Toralf Förster: > On 05/01/2014 11:22 AM, Richard Weinberger wrote: >> On Wed, Apr 30, 2014 at 8:19 PM, Toralf Förster <[email protected]> wrote: >>> -or- it uncovers a bug in kernel v3.15-rc3 for UML: >> >> UML most not panic. :) >> >> Do you have the trinity logs? >> I'd like to know the syscalls parameters. > I run trinity with "-C 2 -c mremap" within the guest, the logs are attached Can you please try the attached pre-patch? It looks like the panic() in that code is an overreaction. I'm currently looking deeper in the issue. BTW: If you hit "BUG: failure at mm/filemap.c:202/__delete_from_page_cache()!", this is a known issue https://lkml.org/lkml/2014/4/15/577 Thanks, //richard
fix.patch
(text/x-patch, 879 B)
diff --git a/arch/um/os-Linux/skas/mem.c b/arch/um/os-Linux/skas/mem.c
index 689b18d..2ce5d49 100644
--- a/arch/um/os-Linux/skas/mem.c
+++ b/arch/um/os-Linux/skas/mem.c
@@ -65,14 +65,17 @@ static inline long do_syscall_stub(struct mm_id * mm_idp, void **addr)
printk(UM_KERN_ERR "Registers - \n");
for (i = 0; i < MAX_REG_NR; i++)
printk(UM_KERN_ERR "\t%d\t0x%lx\n", i, syscall_regs[i]);
- panic("do_syscall_stub : PTRACE_SETREGS failed, errno = %d\n",
- -n);
+ printk(KERN_ERR "do_syscall_stub : PTRACE_SETREGS failed, pid = %d, errno = %d\n",
+ pid, -n);
+ return -EFAULT;
}
err = ptrace(PTRACE_CONT, pid, 0, 0);
- if (err)
- panic("Failed to continue stub, pid = %d, errno = %d\n", pid,
+ if (err) {
+ printk(KERN_ERR "Failed to continue stub, pid = %d, errno = %d\n", pid,
errno);
+ return -EFAULT;
+ }
wait_stub_done(pid);