c51cd5fe91
Before safecopies, the IO_ENDPT and DL_ENDPT message fields were needed to know which actual process to copy data from/to, as that process may not always be the caller. Now that we have full safecopy support, these fields have become useless for that purpose: the owner of the grant is *always* the caller. Allowing the caller to supply another endpoint is in fact dangerous, because the callee may then end up using a grant from a third party. One could call this a variant of the confused deputy problem. From now on, safecopy calls should always use the caller's endpoint as grant owner. This fully obsoletes the DL_ENDPT field in the inet/ethernet protocol. IO_ENDPT has other uses besides identifying the grant owner though. This patch renames IO_ENDPT to USER_ENDPT, not only because that is a more fitting name (it should never be used for I/O after all), but also in order to intentionally break any old system source code outside the base system. If this patch breaks your code, fixing it is fairly simple: - DL_ENDPT should be replaced with m_source; - IO_ENDPT should be replaced with m_source when used for safecopies; - IO_ENDPT should be replaced with USER_ENDPT for any other use, e.g. when setting REP_ENDPT, matching requests in CANCEL calls, getting DEV_SELECT flags, and retrieving of the real user process's endpoint in DEV_OPEN. The changes in this patch are binary backward compatible. |
||
---|---|---|
.. | ||
include | ||
acpi.c | ||
acpi.h | ||
apic.c | ||
apic.h | ||
apic_asm.h | ||
apic_asm.S | ||
arch_clock.c | ||
arch_do_vmctl.c | ||
arch_smp.c | ||
arch_system.c | ||
arch_watchdog.c | ||
breakpoints.c | ||
debugreg.h | ||
debugreg.S | ||
do_int86.c | ||
do_iopenable.c | ||
do_readbios.c | ||
do_sdevio.c | ||
exception.c | ||
glo.h | ||
i8259.c | ||
io_inb.S | ||
io_inl.S | ||
io_intr.S | ||
io_inw.S | ||
io_outb.S | ||
io_outl.S | ||
io_outw.S | ||
kernel.lds | ||
klib.S | ||
klib16.S | ||
Makefile.inc | ||
memory.c | ||
mpx.S | ||
multiboot.h | ||
multiboot.S | ||
oxpcie.c | ||
oxpcie.h | ||
pre_init.c | ||
protect.c | ||
sconst.h | ||
serial.h | ||
trampoline.S |