bug-hurd
[Top][All Lists]
Advanced

[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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]