hurd: Fix vm_size_t incoherencies
authorSamuel Thibault <samuel.thibault@ens-lyon.org>
Sun, 28 Aug 2022 23:42:47 +0000 (01:42 +0200)
committerSamuel Thibault <samuel.thibault@ens-lyon.org>
Sun, 28 Aug 2022 23:42:47 +0000 (01:42 +0200)
In gnumach, 3e1702a65fb3 ("add rpc_versions for vm types") changed the type
of vm_size_t, making it always a unsigned long. This made it incompatible on
x86 with size_t. Even if we may want to revert it to unsigned int, it's
better to fix the types of parameters according to the .defs files.

12 files changed:
hurd/fd-write.c
hurd/fopenport.c
hurd/get-host.c
hurd/hurdioctl.c
hurd/set-host.c
hurd/vpprintf.c
sysdeps/mach/hurd/dl-sysdep.c
sysdeps/mach/hurd/ptrace.c
sysdeps/mach/hurd/send.c
sysdeps/mach/hurd/sendfile64.c
sysdeps/mach/hurd/sendmsg.c
sysdeps/mach/hurd/sendto.c

index a18e76b4d280218eb4c99227492ee67338ed1a61..28be1ba7588169c35c3d8704cbfd4015b91b3cd0 100644 (file)
@@ -26,7 +26,7 @@ _hurd_fd_write (struct hurd_fd *fd,
                const void *buf, size_t *nbytes, loff_t offset)
 {
   error_t err;
-  mach_msg_type_number_t wrote;
+  vm_size_t wrote;
 
   error_t writefd (io_t port)
     {
index 293c902ae3f64277417f1f8c316523c72d87e979..5bc01fcd7e4447b619783696205ec30ba1198417 100644 (file)
@@ -48,7 +48,7 @@ readio (void *cookie, char *buf, size_t n)
 static ssize_t
 writeio (void *cookie, const char *buf, size_t n)
 {
-  mach_msg_type_number_t wrote;
+  vm_size_t wrote;
   error_t err;
 
   if (err = __io_write ((io_t) cookie, buf, n, -1, &wrote))
index bdaf86bbf422fc20ed06259446794671049d5ccc..a21aa15008ab187332e0b8656697d3709463ad56 100644 (file)
@@ -27,7 +27,8 @@ _hurd_get_host_config (const char *item, char *buf, size_t buflen)
 {
   error_t err;
   char *data;
-  mach_msg_type_number_t nread, more;
+  mach_msg_type_number_t nread;
+  vm_size_t more;
   file_t config;
 
   err = __hurd_file_name_lookup (&_hurd_ports_use, &__getdport, 0,
index fce487c12cb4dccb425325360e048ac79bf57675..526a74aa4dc9d172fd7b0da0b0a2d836b579406e 100644 (file)
@@ -70,7 +70,7 @@ fioctl (int fd,
 
     case FIONREAD:
       {
-       mach_msg_type_number_t navail;
+       vm_size_t navail;
        err = HURD_DPORT_USE (fd, __io_readable (port, &navail));
        if (!err)
          *arg = (int) navail;
index 16d1d8deed14d9dd914a7804751d67ad6679e702..afa8f62b5dec73595749cc68322b8bd21d81b505 100644 (file)
@@ -24,7 +24,7 @@ ssize_t
 _hurd_set_host_config (const char *item, const char *value, size_t valuelen)
 {
   error_t err;
-  mach_msg_type_number_t nwrote;
+  vm_size_t nwrote;
   file_t new, dir;
   char *name;
 
index 67450399f5acc652464ca527c3408d8e5532fa03..9ba39957d22e7e2de185899f43d1c0141c78b541 100644 (file)
@@ -25,8 +25,8 @@
 static ssize_t
 do_write (void *cookie,        const char *buf, size_t n)
 {
-  error_t error = __io_write ((io_t) cookie, buf, n, -1,
-                             (mach_msg_type_number_t *) &n);
+  vm_size_t amount = n;
+  error_t error = __io_write ((io_t) cookie, buf, n, -1, &amount);
   if (error)
     return __hurd_fail (error);
   return n;
index f23fdee05854d32ebecc8f0d14365d3f159cd53c..2f022ee90c8cf4d573ef1acfd02226dba8b72716 100644 (file)
@@ -382,7 +382,7 @@ __ssize_t weak_function
 __write (int fd, const void *buf, size_t nbytes)
 {
   error_t err;
-  mach_msg_type_number_t nwrote;
+  vm_size_t nwrote;
 
   assert (fd < _hurd_init_dtablesize);
 
@@ -415,7 +415,7 @@ __writev (int fd, const struct iovec *iov, int niov)
     {
       char buf[total], *bufp = buf;
       error_t err;
-      mach_msg_type_number_t nwrote;
+      vm_size_t nwrote;
 
       for (i = 0; i < niov; ++i)
        bufp = (memcpy (bufp, iov[i].iov_base, iov[i].iov_len)
index 9a32cd9a60a0e24fbf6860f90ca4165672422307..a043f325c51afa39becf2c25f7b31660076108be 100644 (file)
@@ -47,8 +47,11 @@ ptrace (enum __ptrace_request request, ... )
     {
       /* Read the pages containing the addressed range.  */
       error_t err;
+      mach_msg_type_number_t nread;
       *size = round_page (addr + data) - trunc_page (addr);
-      err = __vm_read (task, trunc_page (addr), *size, ourpage, size);
+      err = __vm_read (task, trunc_page (addr), *size, ourpage, &nread);
+      if (!err)
+       *size = nread;
       return err;
     }
 
index c0826f1d18f0a881a6054396ef747d0e4ba914b6..4df38e2b5f80e157abe6a7a44908a5a7afbfaf4e 100644 (file)
@@ -27,7 +27,7 @@ ssize_t
 __send (int fd, const void *buf, size_t n, int flags)
 {
   error_t err;
-  size_t wrote;
+  vm_size_t wrote;
   int cancel_oldtype;
 
   cancel_oldtype = LIBC_CANCEL_ASYNC();
index 77c3a2fbf1b2b5118cdcc11369e5b8e2646dd899..8b24f2169c6041ac71bdcdbae635460ba9130138 100644 (file)
@@ -42,7 +42,7 @@ __sendfile64 (int out_fd, int in_fd, off64_t *offset, size_t count)
                                           count));
   if (err == 0)
     {
-      size_t nwrote;
+      vm_size_t nwrote;
       if (datalen == 0)
        return 0;
       err = HURD_DPORT_USE (out_fd, __io_write (port, data, datalen,
index 56bcee733fbff91b3830540bcc8a2e35eb253c10..5ca01fc1ad585add01e0710d3e52ae841e14e6af 100644 (file)
@@ -47,7 +47,7 @@ __libc_sendmsg (int fd, const struct msghdr *message, int flags)
   } data = { .ptr = NULL };
   char data_buf[2048];
   mach_msg_type_number_t len;
-  mach_msg_type_number_t amount;
+  vm_size_t amount;
   int dealloc = 0;
   int socketrpc = 0;
   int i;
index e55469fea0220566da362d9f0cf5b6910dab9181..36a76bc0433b2108adf2a95c48894c09e17d11b2 100644 (file)
@@ -37,7 +37,7 @@ __sendto (int fd,
 {
   addr_port_t aport = MACH_PORT_NULL;
   error_t err;
-  size_t wrote;
+  vm_size_t wrote;
 
   /* Get an address port for the desired destination address.  */
   error_t create_address_port (io_t port,