summaryrefslogtreecommitdiffstats
path: root/sys/amd64
diff options
context:
space:
mode:
authorkib <kib@FreeBSD.org>2010-04-13 10:12:58 +0000
committerkib <kib@FreeBSD.org>2010-04-13 10:12:58 +0000
commit24680f53887643c0e1c8e610518347a34d2515e6 (patch)
treeea49dc381f3858cdda45cd5ac713bf1bbcf42139 /sys/amd64
parent05b4eb119e3b18f969bbe18f5c2f0c47410c40df (diff)
downloadFreeBSD-src-24680f53887643c0e1c8e610518347a34d2515e6.zip
FreeBSD-src-24680f53887643c0e1c8e610518347a34d2515e6.tar.gz
Change printf() calls to uprintf() for sigreturn() and trap() complaints
about inacessible or wrong mcontext, and for dreaded "kernel trap with interrupts disabled" situation. The later is changed when trap is generated from user mode (shall never be ?). Normalize the messages to include both pid and thread name. MFC after: 1 week
Diffstat (limited to 'sys/amd64')
-rw-r--r--sys/amd64/amd64/machdep.c17
-rw-r--r--sys/amd64/amd64/trap.c2
-rw-r--r--sys/amd64/ia32/ia32_signal.c12
3 files changed, 19 insertions, 12 deletions
diff --git a/sys/amd64/amd64/machdep.c b/sys/amd64/amd64/machdep.c
index 1155eaa..b65b679 100644
--- a/sys/amd64/amd64/machdep.c
+++ b/sys/amd64/amd64/machdep.c
@@ -424,13 +424,14 @@ sigreturn(td, uap)
error = copyin(uap->sigcntxp, &uc, sizeof(uc));
if (error != 0) {
- printf("sigreturn (pid %d): copyin failed\n", p->p_pid);
+ uprintf("pid %d (%s): sigreturn copyin failed\n",
+ p->p_pid, td->td_name);
return (error);
}
ucp = &uc;
if ((ucp->uc_mcontext.mc_flags & ~_MC_FLAG_MASK) != 0) {
- printf("sigreturn (pid %d): mc_flags %x\n", p->p_pid,
- ucp->uc_mcontext.mc_flags);
+ uprintf("pid %d (%s): sigreturn mc_flags %x\n", p->p_pid,
+ td->td_name, ucp->uc_mcontext.mc_flags);
return (EINVAL);
}
regs = td->td_frame;
@@ -449,8 +450,8 @@ sigreturn(td, uap)
* one less debugger trap, so allowing it is fairly harmless.
*/
if (!EFL_SECURE(rflags & ~PSL_RF, regs->tf_rflags & ~PSL_RF)) {
- printf("sigreturn (pid %d): rflags = 0x%lx\n", p->p_pid,
- rflags);
+ uprintf("pid %d (%s): sigreturn rflags = 0x%lx\n", p->p_pid,
+ td->td_name, rflags);
return (EINVAL);
}
@@ -461,7 +462,8 @@ sigreturn(td, uap)
*/
cs = ucp->uc_mcontext.mc_cs;
if (!CS_SECURE(cs)) {
- printf("sigreturn (pid %d): cs = 0x%x\n", p->p_pid, cs);
+ uprintf("pid %d (%s): sigreturn cs = 0x%x\n", p->p_pid,
+ td->td_name, cs);
ksiginfo_init_trap(&ksi);
ksi.ksi_signo = SIGBUS;
ksi.ksi_code = BUS_OBJERR;
@@ -473,7 +475,8 @@ sigreturn(td, uap)
ret = set_fpcontext(td, &ucp->uc_mcontext);
if (ret != 0) {
- printf("sigreturn (pid %d): set_fpcontext\n", p->p_pid);
+ uprintf("pid %d (%s): sigreturn set_fpcontext err %d\n",
+ p->p_pid, td->td_name, ret);
return (ret);
}
bcopy(&ucp->uc_mcontext.mc_rdi, regs, sizeof(*regs));
diff --git a/sys/amd64/amd64/trap.c b/sys/amd64/amd64/trap.c
index a1cb75a..8acde03 100644
--- a/sys/amd64/amd64/trap.c
+++ b/sys/amd64/amd64/trap.c
@@ -303,7 +303,7 @@ trap(struct trapframe *frame)
* enabled later.
*/
if (ISPL(frame->tf_cs) == SEL_UPL)
- printf(
+ uprintf(
"pid %ld (%s): trap %d with interrupts disabled\n",
(long)curproc->p_pid, curthread->td_name, type);
else if (type != T_NMI && type != T_BPTFLT &&
diff --git a/sys/amd64/ia32/ia32_signal.c b/sys/amd64/ia32/ia32_signal.c
index a4293c8..8033443 100644
--- a/sys/amd64/ia32/ia32_signal.c
+++ b/sys/amd64/ia32/ia32_signal.c
@@ -565,7 +565,8 @@ freebsd4_freebsd32_sigreturn(td, uap)
* one less debugger trap, so allowing it is fairly harmless.
*/
if (!EFL_SECURE(eflags & ~PSL_RF, regs->tf_rflags & ~PSL_RF)) {
- printf("freebsd4_freebsd32_sigreturn: eflags = 0x%x\n", eflags);
+ uprintf("pid %d (%s): freebsd4_freebsd32_sigreturn eflags = 0x%x\n",
+ td->td_proc->p_pid, td->td_name, eflags);
return (EINVAL);
}
@@ -576,7 +577,8 @@ freebsd4_freebsd32_sigreturn(td, uap)
*/
cs = ucp->uc_mcontext.mc_cs;
if (!CS_SECURE(cs)) {
- printf("freebsd4_sigreturn: cs = 0x%x\n", cs);
+ uprintf("pid %d (%s): freebsd4_sigreturn cs = 0x%x\n",
+ td->td_proc->p_pid, td->td_name, cs);
ksiginfo_init_trap(&ksi);
ksi.ksi_signo = SIGBUS;
ksi.ksi_code = BUS_OBJERR;
@@ -647,7 +649,8 @@ freebsd32_sigreturn(td, uap)
* one less debugger trap, so allowing it is fairly harmless.
*/
if (!EFL_SECURE(eflags & ~PSL_RF, regs->tf_rflags & ~PSL_RF)) {
- printf("freebsd32_sigreturn: eflags = 0x%x\n", eflags);
+ uprintf("pid %d (%s): freebsd32_sigreturn eflags = 0x%x\n",
+ td->td_proc->p_pid, td->td_name, eflags);
return (EINVAL);
}
@@ -658,7 +661,8 @@ freebsd32_sigreturn(td, uap)
*/
cs = ucp->uc_mcontext.mc_cs;
if (!CS_SECURE(cs)) {
- printf("sigreturn: cs = 0x%x\n", cs);
+ uprintf("pid %d (%s): sigreturn cs = 0x%x\n",
+ td->td_proc->p_pid, td->td_name, cs);
ksiginfo_init_trap(&ksi);
ksi.ksi_signo = SIGBUS;
ksi.ksi_code = BUS_OBJERR;
OpenPOWER on IntegriCloud