git: 223de44c9365 - main - vmm devmem_mmap_single: Bump object reference under memsegs lock.
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Fri, 18 Nov 2022 18:26:53 UTC
The branch main has been updated by jhb:
URL: https://cgit.FreeBSD.org/src/commit/?id=223de44c93659457e05036dec25b0af610a773a6
commit 223de44c93659457e05036dec25b0af610a773a6
Author: John Baldwin <jhb@FreeBSD.org>
AuthorDate: 2022-11-18 18:04:58 +0000
Commit: John Baldwin <jhb@FreeBSD.org>
CommitDate: 2022-11-18 18:25:38 +0000
vmm devmem_mmap_single: Bump object reference under memsegs lock.
Reported by: markj
Reviewed by: corvink, markj
Differential Revision: https://reviews.freebsd.org/D37273
---
sys/amd64/vmm/vmm_dev.c | 12 +++++-------
1 file changed, 5 insertions(+), 7 deletions(-)
diff --git a/sys/amd64/vmm/vmm_dev.c b/sys/amd64/vmm/vmm_dev.c
index 1b8b1e6d388f..a7c12da68701 100644
--- a/sys/amd64/vmm/vmm_dev.c
+++ b/sys/amd64/vmm/vmm_dev.c
@@ -1262,15 +1262,13 @@ devmem_mmap_single(struct cdev *cdev, vm_ooffset_t *offset, vm_size_t len,
KASSERT(error == 0 && !sysmem && *objp != NULL,
("%s: invalid devmem segment %d", __func__, dsc->segid));
+ if (seglen >= last)
+ vm_object_reference(*objp);
+ else
+ error = EINVAL;
vm_unlock_memsegs(dsc->sc->vm);
-
- if (seglen >= last) {
- vm_object_reference(*objp);
- return (0);
- } else {
- return (EINVAL);
- }
+ return (error);
}
static struct cdevsw devmemsw = {