freebsd-nq/sys/i386
Konstantin Belousov a4730cdb82 Improve i386_get_ldt().
Provide consistent snapshot of the requested descriptors by preventing
other threads from modifying LDT while we fetch the data, lock dt_lock
around the read.  Copy the data into intermediate buffer, which is
copied out after the lock is dropped.

Comparing with the amd64 version, the read is done byte by byte, since
there is no atomic 64bit read (cmpxchg8b method is too heavy comparing
with the avoided issues).

Improve overflow checking for the descriptors range calculations and
remove unneeded casts.  Use unsigned types for sizes.

Allow zero num argument to i386_get_ldt() and i386_set_ldt().  This
case is handled naturally by the code flow.

Reviewed by:	bde
Sponsored by:	The FreeBSD Foundation
MFC after:	1 week
2017-10-06 14:29:53 +00:00
..
acpica
bios Remove Micro Channel Architecture support. Of the commonly available 2017-02-15 23:04:25 +00:00
cloudabi32 Move struct syscall_args syscall arguments parameters container into 2017-06-12 21:03:23 +00:00
conf Fix indentation for r323068 2017-09-19 20:40:05 +00:00
i386 Improve i386_get_ldt(). 2017-10-06 14:29:53 +00:00
ibcs2 Remove register keyword from sys/ and ANSIfy prototypes 2017-05-17 00:34:34 +00:00
include Restore a part of r323722. 2017-09-28 08:46:15 +00:00
isa Revert r323722. A better fix will be committed shortly, as well as 2017-09-28 08:38:24 +00:00
linux Avoid using [LINUX_]SHAREDPAGE constant directly in the vdso code. 2017-07-30 21:24:20 +00:00
pci Remove pc98 support completely. 2017-01-28 02:22:15 +00:00
xbox
Makefile