|
@@ -255,8 +255,8 @@ static int userspace_tramp(void *stack)
|
|
|
|
|
|
set_sigstack((void *) STUB_DATA, UM_KERN_PAGE_SIZE);
|
|
set_sigstack((void *) STUB_DATA, UM_KERN_PAGE_SIZE);
|
|
sigemptyset(&sa.sa_mask);
|
|
sigemptyset(&sa.sa_mask);
|
|
- sa.sa_flags = SA_ONSTACK | SA_NODEFER;
|
|
|
|
- sa.sa_handler = (void *) v;
|
|
|
|
|
|
+ sa.sa_flags = SA_ONSTACK | SA_NODEFER | SA_SIGINFO;
|
|
|
|
+ sa.sa_sigaction = (void *) v;
|
|
sa.sa_restorer = NULL;
|
|
sa.sa_restorer = NULL;
|
|
if (sigaction(SIGSEGV, &sa, NULL) < 0) {
|
|
if (sigaction(SIGSEGV, &sa, NULL) < 0) {
|
|
printk(UM_KERN_ERR "userspace_tramp - setting SIGSEGV "
|
|
printk(UM_KERN_ERR "userspace_tramp - setting SIGSEGV "
|