]> granicus.if.org Git - strace/blobdiff - fetch_struct_statfs.c
mmap_cache: add function to enable mmap_cache
[strace] / fetch_struct_statfs.c
index 0cfe5bafc0272bba72517e603ac6f9dfb3b8dde2..568c158c28a1b9da523c70329ae55aac36aa341c 100644 (file)
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2014-2016 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -40,33 +41,34 @@ typedef struct statfs64 struct_statfs64;
 #include "statfs.h"
 
 MPERS_PRINTER_DECL(bool, fetch_struct_statfs,
-                  struct tcb *tcp, const long addr, struct strace_statfs *p)
+                  struct tcb *const tcp, const kernel_ulong_t addr,
+                  struct strace_statfs *const p)
 {
        struct_statfs b;
 
        if (umove_or_printaddr(tcp, addr, &b))
                return false;
 
-       p->f_type = widen_to_ull(b.f_type);
-       p->f_bsize = widen_to_ull(b.f_bsize);
-       p->f_blocks = widen_to_ull(b.f_blocks);
-       p->f_bfree = widen_to_ull(b.f_bfree);
-       p->f_bavail = widen_to_ull(b.f_bavail);
-       p->f_files = widen_to_ull(b.f_files);
-       p->f_ffree = widen_to_ull(b.f_ffree);
+       p->f_type = zero_extend_signed_to_ull(b.f_type);
+       p->f_bsize = zero_extend_signed_to_ull(b.f_bsize);
+       p->f_blocks = zero_extend_signed_to_ull(b.f_blocks);
+       p->f_bfree = zero_extend_signed_to_ull(b.f_bfree);
+       p->f_bavail = zero_extend_signed_to_ull(b.f_bavail);
+       p->f_files = zero_extend_signed_to_ull(b.f_files);
+       p->f_ffree = zero_extend_signed_to_ull(b.f_ffree);
 #if defined HAVE_STRUCT_STATFS_F_FSID_VAL
-       p->f_fsid[0] = widen_to_ull(b.f_fsid.val[0]);
-       p->f_fsid[1] = widen_to_ull(b.f_fsid.val[1]);
+       p->f_fsid[0] = zero_extend_signed_to_ull(b.f_fsid.val[0]);
+       p->f_fsid[1] = zero_extend_signed_to_ull(b.f_fsid.val[1]);
 #elif defined HAVE_STRUCT_STATFS_F_FSID___VAL
-       p->f_fsid[0] = widen_to_ull(b.f_fsid.__val[0]);
-       p->f_fsid[1] = widen_to_ull(b.f_fsid.__val[1]);
+       p->f_fsid[0] = zero_extend_signed_to_ull(b.f_fsid.__val[0]);
+       p->f_fsid[1] = zero_extend_signed_to_ull(b.f_fsid.__val[1]);
 #endif
-       p->f_namelen = widen_to_ull(b.f_namelen);
+       p->f_namelen = zero_extend_signed_to_ull(b.f_namelen);
 #ifdef HAVE_STRUCT_STATFS_F_FRSIZE
-       p->f_frsize = widen_to_ull(b.f_frsize);
+       p->f_frsize = zero_extend_signed_to_ull(b.f_frsize);
 #endif
 #ifdef HAVE_STRUCT_STATFS_F_FLAGS
-       p->f_flags = widen_to_ull(b.f_flags);
+       p->f_flags = zero_extend_signed_to_ull(b.f_flags);
 #endif
 
        return true;
@@ -78,12 +80,12 @@ MPERS_PRINTER_DECL(bool, fetch_struct_statfs,
 #endif
 
 MPERS_PRINTER_DECL(bool, fetch_struct_statfs64,
-                  struct tcb *tcp, const long addr, const unsigned long size,
-                  struct strace_statfs *p)
+                  struct tcb *const tcp, const kernel_ulong_t addr,
+                  const kernel_ulong_t size, struct strace_statfs *const p)
 {
        struct_statfs64 b;
 
-        if (sizeof(b) != size
+       if (sizeof(b) != size
 #ifdef COMPAT_STATFS64_PADDED_SIZE
            && sizeof(b) != COMPAT_STATFS64_PADDED_SIZE
 #endif
@@ -95,26 +97,26 @@ MPERS_PRINTER_DECL(bool, fetch_struct_statfs64,
        if (umove_or_printaddr(tcp, addr, &b))
                return false;
 
-       p->f_type = widen_to_ull(b.f_type);
-       p->f_bsize = widen_to_ull(b.f_bsize);
-       p->f_blocks = widen_to_ull(b.f_blocks);
-       p->f_bfree = widen_to_ull(b.f_bfree);
-       p->f_bavail = widen_to_ull(b.f_bavail);
-       p->f_files = widen_to_ull(b.f_files);
-       p->f_ffree = widen_to_ull(b.f_ffree);
+       p->f_type = zero_extend_signed_to_ull(b.f_type);
+       p->f_bsize = zero_extend_signed_to_ull(b.f_bsize);
+       p->f_blocks = zero_extend_signed_to_ull(b.f_blocks);
+       p->f_bfree = zero_extend_signed_to_ull(b.f_bfree);
+       p->f_bavail = zero_extend_signed_to_ull(b.f_bavail);
+       p->f_files = zero_extend_signed_to_ull(b.f_files);
+       p->f_ffree = zero_extend_signed_to_ull(b.f_ffree);
 #if defined HAVE_STRUCT_STATFS64_F_FSID_VAL
-       p->f_fsid[0] = widen_to_ull(b.f_fsid.val[0]);
-       p->f_fsid[1] = widen_to_ull(b.f_fsid.val[1]);
+       p->f_fsid[0] = zero_extend_signed_to_ull(b.f_fsid.val[0]);
+       p->f_fsid[1] = zero_extend_signed_to_ull(b.f_fsid.val[1]);
 #elif defined HAVE_STRUCT_STATFS64_F_FSID___VAL
-       p->f_fsid[0] = widen_to_ull(b.f_fsid.__val[0]);
-       p->f_fsid[1] = widen_to_ull(b.f_fsid.__val[1]);
+       p->f_fsid[0] = zero_extend_signed_to_ull(b.f_fsid.__val[0]);
+       p->f_fsid[1] = zero_extend_signed_to_ull(b.f_fsid.__val[1]);
 #endif
-       p->f_namelen = widen_to_ull(b.f_namelen);
+       p->f_namelen = zero_extend_signed_to_ull(b.f_namelen);
 #ifdef HAVE_STRUCT_STATFS64_F_FRSIZE
-       p->f_frsize = widen_to_ull(b.f_frsize);
+       p->f_frsize = zero_extend_signed_to_ull(b.f_frsize);
 #endif
 #ifdef HAVE_STRUCT_STATFS64_F_FLAGS
-       p->f_flags = widen_to_ull(b.f_flags);
+       p->f_flags = zero_extend_signed_to_ull(b.f_flags);
 #endif
 
        return true;