Luca Dariz, le mar. 28 juin 2022 12:10:41 +0200, a ecrit: > * 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 <l...@orpolo.org>
Applied, thanks! > --- > 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 > > -- Samuel --- Pour une évaluation indépendante, transparente et rigoureuse ! Je soutiens la Commission d'Évaluation de l'Inria.