From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751546Ab3KRElM (ORCPT ); Sun, 17 Nov 2013 23:41:12 -0500 Received: from lgeamrelo01.lge.com ([156.147.1.125]:58897 "EHLO LGEAMRELO01.lge.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751051Ab3KREkw (ORCPT ); Sun, 17 Nov 2013 23:40:52 -0500 X-AuditID: 9c93017d-b7b15ae000000e52-65-52899a521d9c From: Namhyung Kim To: Steven Rostedt Cc: Frederic Weisbecker , Ingo Molnar , Masami Hiramatsu , LKML , Namhyung Kim , Srikar Dronamraju , Oleg Nesterov , "zhangwei(Jovi)" , Arnaldo Carvalho de Melo Subject: [PATCH 2/2] tracing/probes: Fix basic print type functions Date: Mon, 18 Nov 2013 13:40:49 +0900 Message-Id: <1384749649-31447-2-git-send-email-namhyung@kernel.org> X-Mailer: git-send-email 1.7.11.7 In-Reply-To: <1384749649-31447-1-git-send-email-namhyung@kernel.org> References: <1384749649-31447-1-git-send-email-namhyung@kernel.org> X-Brightmail-Tracker: AAAAAA== Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Namhyung Kim 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'd be better if we have exact format and type cast for each types on both of 32- and 64-bit systems. In fact, the only difference is on s64/u64 types. Acked-by: Masami Hiramatsu Cc: Srikar Dronamraju Cc: Oleg Nesterov Cc: zhangwei(Jovi) Cc: Arnaldo Carvalho de Melo Signed-off-by: Namhyung Kim --- kernel/trace/trace_probe.c | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/kernel/trace/trace_probe.c b/kernel/trace/trace_probe.c index 412e959709b4..b571e4de0769 100644 --- a/kernel/trace/trace_probe.c +++ b/kernel/trace/trace_probe.c @@ -49,14 +49,19 @@ static __kprobes int PRINT_TYPE_FUNC_NAME(type)(struct trace_seq *s, \ } \ static const char PRINT_TYPE_FMT_NAME(type)[] = fmt; -DEFINE_BASIC_PRINT_TYPE_FUNC(u8, "%x", unsigned int) -DEFINE_BASIC_PRINT_TYPE_FUNC(u16, "%x", unsigned int) -DEFINE_BASIC_PRINT_TYPE_FUNC(u32, "%lx", unsigned long) +DEFINE_BASIC_PRINT_TYPE_FUNC(u8 , "%x", unsigned char) +DEFINE_BASIC_PRINT_TYPE_FUNC(u16, "%x", unsigned short) +DEFINE_BASIC_PRINT_TYPE_FUNC(u32, "%x", unsigned int) +DEFINE_BASIC_PRINT_TYPE_FUNC(s8, "%d", signed char) +DEFINE_BASIC_PRINT_TYPE_FUNC(s16, "%d", short) +DEFINE_BASIC_PRINT_TYPE_FUNC(s32, "%d", int) +#if BITS_PER_LONG == 32 DEFINE_BASIC_PRINT_TYPE_FUNC(u64, "%llx", unsigned long long) -DEFINE_BASIC_PRINT_TYPE_FUNC(s8, "%d", int) -DEFINE_BASIC_PRINT_TYPE_FUNC(s16, "%d", int) -DEFINE_BASIC_PRINT_TYPE_FUNC(s32, "%ld", long) DEFINE_BASIC_PRINT_TYPE_FUNC(s64, "%lld", long long) +#else /* BITS_PER_LONG == 64 */ +DEFINE_BASIC_PRINT_TYPE_FUNC(u64, "%lx", unsigned long) +DEFINE_BASIC_PRINT_TYPE_FUNC(s64, "%ld", long) +#endif static inline void *get_rloc_data(u32 *dl) { -- 1.7.11.7