aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/xen/gntdev
diff options
context:
space:
mode:
authorMark Johnston <markj@FreeBSD.org>2023-12-26 01:42:58 +0000
committerMark Johnston <markj@FreeBSD.org>2023-12-26 02:04:01 +0000
commit6cdff09c0d70f780a738dbd3d87deb3b13ec8446 (patch)
treecab49d7b6e17cca480c40cf5479feac6c7504f6a /sys/dev/xen/gntdev
parent68cc77a3b73ffda1e8ac891b9852faca833e11b7 (diff)
Diffstat (limited to 'sys/dev/xen/gntdev')
-rw-r--r--sys/dev/xen/gntdev/gntdev.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/sys/dev/xen/gntdev/gntdev.c b/sys/dev/xen/gntdev/gntdev.c
index a9b69ba1605e..4530feb1c76d 100644
--- a/sys/dev/xen/gntdev/gntdev.c
+++ b/sys/dev/xen/gntdev/gntdev.c
@@ -383,6 +383,13 @@ gntdev_alloc_gref(struct ioctl_gntdev_alloc_gref *arg)
}
}
+ /* Copy the output values. */
+ arg->index = file_offset;
+ for (i = 0; error == 0 && i < arg->count; i++) {
+ if (suword32(&arg->gref_ids[i], grefs[i].gref_id) != 0)
+ error = EFAULT;
+ }
+
if (error != 0) {
/*
* If target domain maps the gref (by guessing the gref-id),
@@ -401,11 +408,6 @@ gntdev_alloc_gref(struct ioctl_gntdev_alloc_gref *arg)
return (error);
}
- /* Copy the output values. */
- arg->index = file_offset;
- for (i = 0; i < arg->count; i++)
- suword32(&arg->gref_ids[i], grefs[i].gref_id);
-
/* Modify the per user private data. */
mtx_lock(&priv_user->user_data_lock);
for (i = 0; i < arg->count; i++)