diff options
author | Sergey Bugaev <bugaevc@gmail.com> | 2023-05-09 00:31:03 +0300 |
---|---|---|
committer | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2023-05-10 02:16:00 +0200 |
commit | 4ba239ddbe936322bd7f9a8b17715ebaeb1cb800 (patch) | |
tree | 54d13689e60310babf35b5d9117278eade2ed758 /libdiskfs/rdwr-internal.c | |
parent | edc6fe07c5a7f9ade000b3bfc17c030fe2086e21 (diff) | |
download | hurd-4ba239ddbe936322bd7f9a8b17715ebaeb1cb800.tar.gz hurd-4ba239ddbe936322bd7f9a8b17715ebaeb1cb800.tar.bz2 hurd-4ba239ddbe936322bd7f9a8b17715ebaeb1cb800.zip |
libdiskfs: Port to x86_64
Message-Id: <20230508213136.608575-9-bugaevc@gmail.com>
Diffstat (limited to 'libdiskfs/rdwr-internal.c')
-rw-r--r-- | libdiskfs/rdwr-internal.c | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/libdiskfs/rdwr-internal.c b/libdiskfs/rdwr-internal.c index 8b2e1319..011558c5 100644 --- a/libdiskfs/rdwr-internal.c +++ b/libdiskfs/rdwr-internal.c @@ -27,12 +27,8 @@ DIR is set for writing and clear for reading. The inode must be locked. If NOTIME is set, then don't update the mtime or atime. */ error_t -_diskfs_rdwr_internal (struct node *np, - char *data, - off_t offset, - size_t *amt, - int dir, - int notime) +_diskfs_rdwr_internal (struct node *np, char *data, off_t offset, + mach_msg_type_number_t *amt, int dir, int notime) { memory_object_t memobj; vm_prot_t prot = dir ? (VM_PROT_READ | VM_PROT_WRITE) : VM_PROT_READ; @@ -63,8 +59,13 @@ _diskfs_rdwr_internal (struct node *np, offset + *amt > ((off_t) 1) << (sizeof(vm_offset_t) * 8)) err = EFBIG; else - err = pager_memcpy (diskfs_get_filemap_pager_struct (np), memobj, - offset, data, amt, prot); + { + size_t amount = *amt; + err = pager_memcpy (diskfs_get_filemap_pager_struct (np), memobj, + offset, data, &amount, prot); + if (!err) + *amt = amount; + } if (!diskfs_check_readonly () && !notime) { |