cvs commit: src/sys/i386/i386 sys_machdep.c vm_machdep.c

Attilio Rao attilio at FreeBSD.org
Sat Jul 7 16:59:02 UTC 2007


attilio     2007-07-07 16:59:01 UTC

  FreeBSD src repository

  Modified files:
    sys/i386/i386        sys_machdep.c vm_machdep.c 
  Log:
  Actual code shows several problems in ia32 LDT handling:
  - When a LDT entry changes, the old one is freed while it is still
    referenced by gdt and ldtr.  This can lead to disruptive behaviours in
    particular on SMP machines.
  - When a LDT entry changes, it is assumed that the only one entity sharing
    the same LDT are threads in the same proc.  It doesn't take in account
    edge cases where two processes share the same VM (rfork'ed ones, for
    example).
  
  This patch addresses these two problems and addictionally it fixes the
  usage of refcount switching back it to the old manually-grown refcount
  (since in this case would be faster).
  
  Diagnosed by: tegge
  Tested by: pho (a former version)
  Reviewed by: kib
  Approved by: jeff (mentor)
  Approved by: re
  
  Revision  Changes    Path
  1.111     +38 -32    src/sys/i386/i386/sys_machdep.c
  1.283     +1 -2      src/sys/i386/i386/vm_machdep.c


More information about the cvs-src mailing list