From owner-cvs-all Thu Feb 22 13: 4:49 2001 Delivered-To: cvs-all@freebsd.org Received: from winston.osd.bsdi.com (winston.osd.bsdi.com [204.216.27.229]) by hub.freebsd.org (Postfix) with ESMTP id E248D37B4EC; Thu, 22 Feb 2001 13:04:40 -0800 (PST) (envelope-from jkh@winston.osd.bsdi.com) Received: from winston.osd.bsdi.com (jkh@localhost [127.0.0.1]) by winston.osd.bsdi.com (8.11.2/8.11.1) with ESMTP id f1ML4IH54316; Thu, 22 Feb 2001 13:04:18 -0800 (PST) (envelope-from jkh@winston.osd.bsdi.com) To: John Baldwin Cc: cvs-committers@FreeBSD.org, cvs-all@FreeBSD.org Subject: Re: cvs commit: src/sys/i386/i386 trap.c In-Reply-To: Message from John Baldwin of "Thu, 22 Feb 2001 11:35:21 PST." <200102221935.f1MJZLx89084@freefall.freebsd.org> Date: Thu, 22 Feb 2001 13:04:18 -0800 Message-ID: <54312.982875858@winston.osd.bsdi.com> From: Jordan Hubbard Sender: owner-cvs-all@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG This is one of the most impressive code to commit message size ratios I've ever seen. ;-) - Jordan > jhb 2001/02/22 11:35:21 PST > > Modified files: > sys/i386/i386 trap.c > Log: > The p_md.md_regs member of proc is used in signal handling to reference > the the original trapframe of the syscall, trap, or interrupt that entered > the kernel. Before SMPng, ast's were handled via a psuedo trap at the > end of doerti. With the SMPng commit, ast's were broken out into a > separate ast() function that was called from doreti to match the behavior > of other architectures. Unfortunately, when this was done, the > p_md.md_regs member of curproc was not updateda in ast(), thus when > signals are handled by userret() after an interrupt that returns to > userland, we end up using a stale trapframe that will result in the > registers from the old trapframe overwriting the real trapframe and > smashing all the registers right before we return to usermode. The saved > %cs:%eip from where we were in usermode are saved in the trapframe for > example. > > Revision Changes Path > 1.181 +2 -1 src/sys/i386/i386/trap.c > To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe cvs-all" in the body of the message