x86: signal: use signal_fault() in sys_sigreturn()

Impact: cleanup

Call signal_fault() in error route of sys_sigreturn().
Change log level to KERN_EMERG if current is init.

Signed-off-by: Hiroshi Shimamoto <h-shimamoto@ct.jp.nec.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
Hiroshi Shimamoto 2008-12-16 14:02:16 -08:00 коммит произвёл Ingo Molnar
Родитель 4217458daf
Коммит ae417bb487
1 изменённых файлов: 3 добавлений и 12 удалений

Просмотреть файл

@ -594,17 +594,7 @@ asmlinkage unsigned long sys_sigreturn(unsigned long __unused)
return ax; return ax;
badframe: badframe:
if (show_unhandled_signals && printk_ratelimit()) { signal_fault(regs, frame, "sigreturn");
printk("%s%s[%d] bad frame in sigreturn frame:"
"%p ip:%lx sp:%lx oeax:%lx",
task_pid_nr(current) > 1 ? KERN_INFO : KERN_EMERG,
current->comm, task_pid_nr(current), frame, regs->ip,
regs->sp, regs->orig_ax);
print_vma_addr(" in ", regs->ip);
printk(KERN_CONT "\n");
}
force_sig(SIGSEGV, current);
return 0; return 0;
} }
@ -901,8 +891,9 @@ void signal_fault(struct pt_regs *regs, void __user *frame, char *where)
struct task_struct *me = current; struct task_struct *me = current;
if (show_unhandled_signals && printk_ratelimit()) { if (show_unhandled_signals && printk_ratelimit()) {
printk(KERN_INFO printk("%s"
"%s[%d] bad frame in %s frame:%p ip:%lx sp:%lx orax:%lx", "%s[%d] bad frame in %s frame:%p ip:%lx sp:%lx orax:%lx",
task_pid_nr(current) > 1 ? KERN_INFO : KERN_EMERG,
me->comm, me->pid, where, frame, me->comm, me->pid, where, frame,
regs->ip, regs->sp, regs->orig_ax); regs->ip, regs->sp, regs->orig_ax);
print_vma_addr(" in ", regs->ip); print_vma_addr(" in ", regs->ip);