(ack, forgot to reply to list) On 06/08/2012 12:26 AM, Richard Weinberger wrote:
> Am 07.06.2012 22:59, schrieb Martin Pärtel: >> Signal handlers in UML guest processes now get correct siginfo_t fields >> for SIGTRAP, SIGFPE, SIGILL and SIGBUS. Specifically, si_addr and si_code >> are now correct where previously they were si_addr = NULL and si_code = 128. > > What exactly is broken? > In my SIGSEGV test case si_addr is not NULL, it contains the correct faulting > address. > SIGSEGV is probably fine. At least SIGFPE is not. Test program below. >> + >> + ptrace(PTRACE_GETSIGINFO, pid, 0,&si); >> + > > Doesn't this leak the host siginfo_t into the guest? > Docs for PTRACE_GETSIGINFO say `si' gets a copy. After that, `si' is not used for anything other than giving it to the guest. But I really can't say I understand the surrounding code too well so please review carefully :) --- #include <stdlib.h> #include <stdio.h> #include <unistd.h> #include <signal.h> void handler(int num, siginfo_t *info, void *data) { printf("CAUGHT SIGNAL %d - si_addr = %p - si_code = %d\n", num, info->si_addr, info->si_code); _exit(1); } int main() { struct sigaction act; act.sa_sigaction = &handler; sigemptyset(&act.sa_mask); act.sa_flags = SA_SIGINFO; sigaction(SIGFPE, &act, NULL); printf("%d\n", 3 / 0); return 0; } ------------------------------------------------------------------------------ Live Security Virtual Conference Exclusive live event will cover all the ways today's security and threat landscape has changed and how IT managers can respond. Discussions will include endpoint security, mobile security and the latest in malware threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ _______________________________________________ User-mode-linux-devel mailing list User-mode-linux-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel