diff options
author | attilio <attilio@FreeBSD.org> | 2007-07-07 16:59:01 +0000 |
---|---|---|
committer | attilio <attilio@FreeBSD.org> | 2007-07-07 16:59:01 +0000 |
commit | cb5c34b947fbb993e5d960f51a98d7d4bd83a4ba (patch) | |
tree | c5d4208dfac2e2132b433f347e2abfba04d27c61 /lib/libarchive/archive_read_open_filename.c | |
parent | d552b08a5de5329d2370b4bf836db8141f8a3658 (diff) | |
download | FreeBSD-src-cb5c34b947fbb993e5d960f51a98d7d4bd83a4ba.zip FreeBSD-src-cb5c34b947fbb993e5d960f51a98d7d4bd83a4ba.tar.gz |
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
Diffstat (limited to 'lib/libarchive/archive_read_open_filename.c')
0 files changed, 0 insertions, 0 deletions