Changeset View
Changeset View
Standalone View
Standalone View
sys/amd64/vmm/vmm_dev.c
Show First 20 Lines • Show All 1,256 Lines • ▼ Show 20 Lines | if ((nprot & PROT_EXEC) || first < 0 || first >= last) | ||||
return (EINVAL); | return (EINVAL); | ||||
vm_slock_memsegs(dsc->sc->vm); | vm_slock_memsegs(dsc->sc->vm); | ||||
error = vm_get_memseg(dsc->sc->vm, dsc->segid, &seglen, &sysmem, objp); | error = vm_get_memseg(dsc->sc->vm, dsc->segid, &seglen, &sysmem, objp); | ||||
KASSERT(error == 0 && !sysmem && *objp != NULL, | KASSERT(error == 0 && !sysmem && *objp != NULL, | ||||
("%s: invalid devmem segment %d", __func__, dsc->segid)); | ("%s: invalid devmem segment %d", __func__, dsc->segid)); | ||||
if (seglen >= last) | |||||
vm_object_reference(*objp); | |||||
else | |||||
error = EINVAL; | |||||
vm_unlock_memsegs(dsc->sc->vm); | vm_unlock_memsegs(dsc->sc->vm); | ||||
return (error); | |||||
if (seglen >= last) { | |||||
vm_object_reference(*objp); | |||||
return (0); | |||||
} else { | |||||
return (EINVAL); | |||||
} | |||||
} | } | ||||
static struct cdevsw devmemsw = { | static struct cdevsw devmemsw = { | ||||
.d_name = "devmem", | .d_name = "devmem", | ||||
.d_version = D_VERSION, | .d_version = D_VERSION, | ||||
.d_mmap_single = devmem_mmap_single, | .d_mmap_single = devmem_mmap_single, | ||||
}; | }; | ||||
▲ Show 20 Lines • Show All 47 Lines • Show Last 20 Lines |