Source-Changes-D archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: CVS commit: src/sys/arch



Le 03/08/2017 à 13:06, Joerg Sonnenberger a écrit :
On Sat, Jul 01, 2017 at 10:44:43AM +0000, Maxime Villard wrote:
Module Name:	src
Committed By:	maxv
Date:		Sat Jul  1 10:44:43 UTC 2017

Modified Files:
	src/sys/arch/amd64/amd64: locore.S
	src/sys/arch/i386/i386: locore.S machdep.c trap.c

Log Message:
Remove the osyscall call gate on i386, and emulate it. There is a one-
instruction race in it that could panic the kernel.

Looking back at this -- can't we provide a user-readable/executable page
and replace the call gate with a normal segment pointing to that page?

I thought about it, but I could see at least one issue: that page would be
allocated dynamically in kern_exec, but the LDT entry is static. We would
have to either put the page at a static location - which violates several
principles, such as the fact that this area could contain a segment from the
binary -, or create per-process LDTs and switch them each time we're doing a
context switch - which has several performance drawbacks, along with creating
new constraints in the LDT that may violate other ones -.

It didn't seem like a good idea, so I ended up simply removing the gate.
Chuck came up with another solution, and I just copied it in i386.

Maxime


Home | Main Index | Thread Index | Old Index