aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNamhyung Kim <namhyung.kim@lge.com>2013-07-31 04:21:01 -0400
committerSteven Rostedt <rostedt@goodmis.org>2014-01-02 16:17:24 -0500
commit50eb2672ce13d73e96f6cee84e78cfb52513ff48 (patch)
tree2c1c2ab3adb533566e2181a0c4423250e0b2e0fd
parent306cfe2025adcba10fb883ad0c540f5541d1b086 (diff)
tracing/probes: Fix basic print type functions
The print format of s32 type was "ld" and it's casted to "long". So it turned out to print 4294967295 for "-1" on 64-bit systems. Not sure whether it worked well on 32-bit systems. Anyway, it doesn't need to have cast argument at all since it already casted using type pointer - just get rid of it. Thanks to Oleg for pointing that out. And print 0x prefix for unsigned type as it shows hex numbers. Suggested-by: Oleg Nesterov <oleg@redhat.com> Acked-by: Oleg Nesterov <oleg@redhat.com> Acked-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com> Cc: Srikar Dronamraju <srikar@linux.vnet.ibm.com> Cc: zhangwei(Jovi) <jovi.zhangwei@huawei.com> Cc: Arnaldo Carvalho de Melo <acme@ghostprotocols.net> Signed-off-by: Namhyung Kim <namhyung@kernel.org>
-rw-r--r--kernel/trace/trace_probe.c22
1 files changed, 11 insertions, 11 deletions
diff --git a/kernel/trace/trace_probe.c b/kernel/trace/trace_probe.c
index 412e959709b4..430505b08a6f 100644
--- a/kernel/trace/trace_probe.c
+++ b/kernel/trace/trace_probe.c
@@ -40,23 +40,23 @@ const char *reserved_field_names[] = {
40#define PRINT_TYPE_FMT_NAME(type) print_type_format_##type 40#define PRINT_TYPE_FMT_NAME(type) print_type_format_##type
41 41
42/* Printing in basic type function template */ 42/* Printing in basic type function template */
43#define DEFINE_BASIC_PRINT_TYPE_FUNC(type, fmt, cast) \ 43#define DEFINE_BASIC_PRINT_TYPE_FUNC(type, fmt) \
44static __kprobes int PRINT_TYPE_FUNC_NAME(type)(struct trace_seq *s, \ 44static __kprobes int PRINT_TYPE_FUNC_NAME(type)(struct trace_seq *s, \
45 const char *name, \ 45 const char *name, \
46 void *data, void *ent)\ 46 void *data, void *ent) \
47{ \ 47{ \
48 return trace_seq_printf(s, " %s=" fmt, name, (cast)*(type *)data);\ 48 return trace_seq_printf(s, " %s=" fmt, name, *(type *)data); \
49} \ 49} \
50static const char PRINT_TYPE_FMT_NAME(type)[] = fmt; 50static const char PRINT_TYPE_FMT_NAME(type)[] = fmt;
51 51
52DEFINE_BASIC_PRINT_TYPE_FUNC(u8, "%x", unsigned int) 52DEFINE_BASIC_PRINT_TYPE_FUNC(u8 , "0x%x")
53DEFINE_BASIC_PRINT_TYPE_FUNC(u16, "%x", unsigned int) 53DEFINE_BASIC_PRINT_TYPE_FUNC(u16, "0x%x")
54DEFINE_BASIC_PRINT_TYPE_FUNC(u32, "%lx", unsigned long) 54DEFINE_BASIC_PRINT_TYPE_FUNC(u32, "0x%x")
55DEFINE_BASIC_PRINT_TYPE_FUNC(u64, "%llx", unsigned long long) 55DEFINE_BASIC_PRINT_TYPE_FUNC(u64, "0x%Lx")
56DEFINE_BASIC_PRINT_TYPE_FUNC(s8, "%d", int) 56DEFINE_BASIC_PRINT_TYPE_FUNC(s8, "%d")
57DEFINE_BASIC_PRINT_TYPE_FUNC(s16, "%d", int) 57DEFINE_BASIC_PRINT_TYPE_FUNC(s16, "%d")
58DEFINE_BASIC_PRINT_TYPE_FUNC(s32, "%ld", long) 58DEFINE_BASIC_PRINT_TYPE_FUNC(s32, "%d")
59DEFINE_BASIC_PRINT_TYPE_FUNC(s64, "%lld", long long) 59DEFINE_BASIC_PRINT_TYPE_FUNC(s64, "%Ld")
60 60
61static inline void *get_rloc_data(u32 *dl) 61static inline void *get_rloc_data(u32 *dl)
62{ 62{