diff options
author | Martin Hunt <hunt@redhat.com> | 2008-03-25 13:44:37 -0400 |
---|---|---|
committer | Martin Hunt <hunt@redhat.com> | 2008-03-25 13:44:37 -0400 |
commit | a8bfd6f19b6fd8b8091b9123e38c77abdebc2fb9 (patch) | |
tree | dfb6cf7ec796db2cd151a314c41fb942352d36de /runtime | |
parent | b56639bb84656464efbf88912f68c36e7f099d49 (diff) | |
download | systemtap-steved-a8bfd6f19b6fd8b8091b9123e38c77abdebc2fb9.tar.gz systemtap-steved-a8bfd6f19b6fd8b8091b9123e38c77abdebc2fb9.tar.xz systemtap-steved-a8bfd6f19b6fd8b8091b9123e38c77abdebc2fb9.zip |
32-bit fixes
Diffstat (limited to 'runtime')
-rw-r--r-- | runtime/transport/ChangeLog | 5 | ||||
-rw-r--r-- | runtime/transport/symbols.c | 10 | ||||
-rw-r--r-- | runtime/transport/transport_msgs.h | 2 |
3 files changed, 11 insertions, 6 deletions
diff --git a/runtime/transport/ChangeLog b/runtime/transport/ChangeLog index c3837f86..9fea0dd4 100644 --- a/runtime/transport/ChangeLog +++ b/runtime/transport/ChangeLog @@ -1,3 +1,8 @@ +2008-03-25 Martin Hunt <hunt@redhat.com> + 32-bit systems can't do 64-bit get_user(), so + * symbols.c (_stp_do_unwind_data): Change unwind_len to a u32. + * transport_msgs.h (struct _stp_msg_unwind): Ditto. + 2008-02-27 Martin Hunt <hunt@redhat.com> * symbols.c: Use rwlocks. Use new dbug macros. Handle diff --git a/runtime/transport/symbols.c b/runtime/transport/symbols.c index 6406d6ad..a81e594f 100644 --- a/runtime/transport/symbols.c +++ b/runtime/transport/symbols.c @@ -205,7 +205,7 @@ static int _stp_init_kernel_symbols(void) static void _stp_do_unwind_data(const char __user *buf, size_t count) { - u64 unwind_len; + u32 unwind_len; unsigned long flags; char name[STP_MODULE_NAME_LEN]; int i; @@ -213,7 +213,7 @@ static void _stp_do_unwind_data(const char __user *buf, size_t count) dbug_unwind(1, "got unwind data, count=%d\n", count); - if (count < STP_MODULE_NAME_LEN + sizeof(u64)) { + if (count < STP_MODULE_NAME_LEN + sizeof(unwind_len)) { dbug_unwind(1, "unwind message too short\n"); return; } @@ -230,12 +230,12 @@ static void _stp_do_unwind_data(const char __user *buf, size_t count) count -= STP_MODULE_NAME_LEN; buf += STP_MODULE_NAME_LEN; - if (get_user(unwind_len, (u64 __user *)buf)) { + if (get_user(unwind_len, (u32 __user *)buf)) { errk("userspace copy failed\n"); return; } - count -= sizeof(u64); - buf += sizeof(u64); + count -= sizeof(unwind_len); + buf += sizeof(unwind_len); if (count != unwind_len) { dbug_unwind(1, "count=%d unwind_len=%d\n", (int)count, (int)unwind_len); return; diff --git a/runtime/transport/transport_msgs.h b/runtime/transport/transport_msgs.h index 0e65b63a..5f385565 100644 --- a/runtime/transport/transport_msgs.h +++ b/runtime/transport/transport_msgs.h @@ -72,7 +72,7 @@ struct _stp_msg_unwind /* the module name, or "*" for all */ char name[STP_MODULE_NAME_LEN]; /* length of unwind data */ - uint64_t unwind_len; + uint32_t unwind_len; /* data ...*/ }; |