"Neri, Ricardo" ricardo.neri@intel.com writes:
On Fri, 2016-11-18 at 14:16 -0600, Alexandre Julliard wrote:
"Neri, Ricardo" ricardo.neri@intel.com writes:
Thanks for the feedback. The consensus in the kernel mailing list is to catch the gp fault within the kernel and give the userspace fake values for the GDT, LDT, IDT and the MSW (I don't think there are vm86 apps that use the task register, are they?). This is because the goal of the feature is to hide these tables from the user space. Would this be a problem?
That sort of depends on what fake values you are returning. Currently we rely on SIDT returning a non-accessible address, in order to catch the resulting memory accesses and fake the IDT contents.
I see. Would a null address suffice? That would be non-accessible.
That wouldn't work, because we'd have no way of knowing that this was an attempted IDT access and not a normal null pointer. We rely on SIDT returning a unique address that we can recognize once we get an access violation fault for it.
It seems to me that in general, forwarding the fault to user-mode would be a more useful behavior than emulating it. Maybe it could be made opt-in somehow to avoid breaking existing apps.