[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 02/15] simplify ipc_kmsg_copyout_body() usage
From: |
Luca Dariz |
Subject: |
[PATCH 02/15] simplify ipc_kmsg_copyout_body() usage |
Date: |
Tue, 28 Jun 2022 12:10:41 +0200 |
* ipc/ipc_kmsg.h: change prototype of ipc_kmsg_copyout_body()
* ipc/ipc_kmsg.c: change prototype and usage of
ipc_kmsg_copyout_body() by incorporating common code
* ipc/mach_msg.c: change usage of ipc_kmsg_copyout_body()
Signed-off-by: Luca Dariz <luca@orpolo.org>
---
ipc/ipc_kmsg.c | 24 ++++++++----------------
ipc/ipc_kmsg.h | 2 +-
ipc/mach_msg.c | 4 +---
3 files changed, 10 insertions(+), 20 deletions(-)
diff --git a/ipc/ipc_kmsg.c b/ipc/ipc_kmsg.c
index 28ed23c6..b9d29853 100644
--- a/ipc/ipc_kmsg.c
+++ b/ipc/ipc_kmsg.c
@@ -2336,13 +2336,17 @@ ipc_kmsg_copyout_object(
mach_msg_return_t
ipc_kmsg_copyout_body(
- vm_offset_t saddr,
- vm_offset_t eaddr,
+ ipc_kmsg_t kmsg,
ipc_space_t space,
vm_map_t map)
{
mach_msg_return_t mr = MACH_MSG_SUCCESS;
kern_return_t kr;
+ vm_offset_t saddr, eaddr;
+
+ saddr = (vm_offset_t) (&kmsg->ikm_header + 1);
+ eaddr = (vm_offset_t) &kmsg->ikm_header +
+ kmsg->ikm_header.msgh_size;
while (saddr < eaddr) {
vm_offset_t taddr = saddr;
@@ -2502,13 +2506,7 @@ ipc_kmsg_copyout(
return mr;
if (mbits & MACH_MSGH_BITS_COMPLEX) {
- vm_offset_t saddr, eaddr;
-
- saddr = (vm_offset_t) (&kmsg->ikm_header + 1);
- eaddr = (vm_offset_t) &kmsg->ikm_header +
- kmsg->ikm_header.msgh_size;
-
- mr = ipc_kmsg_copyout_body(saddr, eaddr, space, map);
+ mr = ipc_kmsg_copyout_body(kmsg, space, map);
if (mr != MACH_MSG_SUCCESS)
mr |= MACH_RCV_BODY_ERROR;
}
@@ -2560,13 +2558,7 @@ ipc_kmsg_copyout_pseudo(
kmsg->ikm_header.msgh_local_port = reply_name;
if (mbits & MACH_MSGH_BITS_COMPLEX) {
- vm_offset_t saddr, eaddr;
-
- saddr = (vm_offset_t) (&kmsg->ikm_header + 1);
- eaddr = (vm_offset_t) &kmsg->ikm_header +
- kmsg->ikm_header.msgh_size;
-
- mr |= ipc_kmsg_copyout_body(saddr, eaddr, space, map);
+ mr |= ipc_kmsg_copyout_body(kmsg, space, map);
}
return mr;
diff --git a/ipc/ipc_kmsg.h b/ipc/ipc_kmsg.h
index c6cd77f0..2d75b173 100644
--- a/ipc/ipc_kmsg.h
+++ b/ipc/ipc_kmsg.h
@@ -270,7 +270,7 @@ ipc_kmsg_copyout_object(ipc_space_t, ipc_object_t,
mach_msg_type_name_t, mach_port_t *);
extern mach_msg_return_t
-ipc_kmsg_copyout_body(vm_offset_t, vm_offset_t, ipc_space_t, vm_map_t);
+ipc_kmsg_copyout_body(ipc_kmsg_t, ipc_space_t, vm_map_t);
extern mach_msg_return_t
ipc_kmsg_copyout(ipc_kmsg_t, ipc_space_t, vm_map_t, mach_port_t);
diff --git a/ipc/mach_msg.c b/ipc/mach_msg.c
index fe0c43e3..0ae8fe0c 100644
--- a/ipc/mach_msg.c
+++ b/ipc/mach_msg.c
@@ -1148,9 +1148,7 @@ mach_msg_trap(
kmsg->ikm_header.msgh_remote_port = MACH_PORT_NULL;
mr = ipc_kmsg_copyout_body(
- (vm_offset_t) (&kmsg->ikm_header + 1),
- (vm_offset_t) &kmsg->ikm_header
- + kmsg->ikm_header.msgh_size,
+ kmsg,
space,
current_map());
--
2.30.2
- [PATCH 00/15] Add preliminary support for 32-bit userspace on a x86_64 kernel, Luca Dariz, 2022/06/28
- [PATCH 01/15] fix rpc types for KERNEL_USER stubs, Luca Dariz, 2022/06/28
- [PATCH 03/15] fix argument passing to bootstrap modules, Luca Dariz, 2022/06/28
- [PATCH 06/15] kmsg: fix msg body alignment, Luca Dariz, 2022/06/28
- [PATCH 09/15] x86_64: fix exception stack alignment, Luca Dariz, 2022/06/28
- [PATCH 04/15] compute mach port size from the corresponding type, Luca Dariz, 2022/06/28
- [PATCH 05/15] sign-extend mask in vm_map() with 32-bit userspace, Luca Dariz, 2022/06/28
- [PATCH 08/15] use port name type in mach_port_names(), Luca Dariz, 2022/06/28
- [PATCH 10/15] x86_64: expand and shrink messages in copy{in, out}msg routines, Luca Dariz, 2022/06/28
- [PATCH 02/15] simplify ipc_kmsg_copyout_body() usage,
Luca Dariz <=
- [PATCH 07/15] fix host_info structure definition, Luca Dariz, 2022/06/28
- [PATCH 11/15] update syscall signature with rpc_vm_* and mach_port_name_t, Luca Dariz, 2022/06/28
- [PATCH 15/15] enable syscalls on x86_64, Luca Dariz, 2022/06/28
- [PATCH 14/15] hack vm memory object proxy creation for vm arrays, Luca Dariz, 2022/06/28
- [PATCH 13/15] cleanup headers in printf.c, Luca Dariz, 2022/06/28
- [PATCH 12/15] fix warnings for 32 bit builds, Luca Dariz, 2022/06/28