Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 22 Feb 2001 11:35:21 -0800 (PST)
From:      John Baldwin <jhb@FreeBSD.org>
To:        cvs-committers@FreeBSD.org, cvs-all@FreeBSD.org
Subject:   cvs commit: src/sys/i386/i386 trap.c
Message-ID:  <200102221935.f1MJZLx89084@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help
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




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200102221935.f1MJZLx89084>