Applied, thanks! Flavio Cruz, le lun. 01 mai 2023 22:52:19 -0400, a ecrit: > In case the kernel interfaces use dynamically sized strings, we will > end up calling mig_deallocate to free the out of line string that was copied > into the kernel. As a matter of contract such type of data is freed > automatically either in kernel code when the RPC fails or in the MiG > stub if it succeeds. > > This was tested by changing task_set_name to use dynamic strings and making > sure out of line data is passed when strlen(name) > 4. > --- > kern/ipc_mig.c | 10 ++++++++++ > 1 file changed, 10 insertions(+) > > diff --git a/kern/ipc_mig.c b/kern/ipc_mig.c > index cb0b2c83..a145f8c5 100644 > --- a/kern/ipc_mig.c > +++ b/kern/ipc_mig.c > @@ -303,6 +303,16 @@ mig_strncpy(char *dest, const char *src, int len) > return dest - dest_; > } > > +/* Called by MiG to deallocate memory, which in this case happens > + * to be kernel memory. */ > +void > +mig_deallocate(vm_address_t addr, vm_size_t size) > +{ > + (void) size; > + /* We do the same thing as in ipc_kmsg_clean_body. */ > + vm_map_copy_discard((vm_map_copy_t) addr); > +} > + > #define fast_send_right_lookup(name, port, abort) > \ > MACRO_BEGIN \ > ipc_space_t space = current_space(); \ > -- > 2.39.2 > >
-- Samuel --- Pour une évaluation indépendante, transparente et rigoureuse ! Je soutiens la Commission d'Évaluation de l'Inria.