Beispiel #1
0
/*
 * Actually free a cheri_fd.  This can only be done if there are no
 * outstanding references in any sandboxes (etc).
 */
void
cheri_fd_destroy(struct cheri_object co)
{
	__capability struct cheri_fd *cfp;

	cfp = cheri_unseal(co.co_datacap, cheri_fd_type);
	CHERI_SYSTEM_OBJECT_FINI(cfp);
	free((void *)cfp);
}
Beispiel #2
0
void
sandbox_object_destroy(struct sandbox_object *sbop)
{
	struct sandbox_class *sbcp;

	sbcp = sbop->sbo_sandbox_classp;
	SANDBOX_CLASS_FREE(sbcp->sbc_sandbox_class_statp);
	if (sbop->sbo_sandbox_object_statp != NULL)
		(void)sandbox_stat_object_deregister(
		    sbop->sbo_sandbox_object_statp);
	sandbox_object_unload(sbop);		/* Unmap memory. */
	CHERI_SYSTEM_OBJECT_FINI(sbop);
	(void)munmap(sbop->sbo_stackmem, sbop->sbo_stacklen);
	bzero(sbop, sizeof(*sbop));		/* Clears tags. */
	free(sbop);
}