From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752286AbcDWNFD (ORCPT ); Sat, 23 Apr 2016 09:05:03 -0400 Received: from terminus.zytor.com ([198.137.202.10]:39950 "EHLO terminus.zytor.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751904AbcDWNFA (ORCPT ); Sat, 23 Apr 2016 09:05:00 -0400 Date: Sat, 23 Apr 2016 06:04:09 -0700 From: tip-bot for Colin Ian King Message-ID: Cc: peterz@infradead.org, hpa@zytor.com, eranian@google.com, adrian.hunter@intel.com, linux-kernel@vger.kernel.org, acme@redhat.com, alexander.shishkin@linux.intel.com, tglx@linutronix.de, colin.king@canonical.com, mingo@kernel.org Reply-To: tglx@linutronix.de, mingo@kernel.org, colin.king@canonical.com, eranian@google.com, adrian.hunter@intel.com, hpa@zytor.com, peterz@infradead.org, alexander.shishkin@linux.intel.com, linux-kernel@vger.kernel.org, acme@redhat.com In-Reply-To: <1461020838-9260-1-git-send-email-colin.king@canonical.com> References: <1461020838-9260-1-git-send-email-colin.king@canonical.com> To: linux-tip-commits@vger.kernel.org Subject: [tip:perf/core] perf jit: memset() variable 'st' using the correct size Git-Commit-ID: f56ebf20d0f535f5da7cfcf0000ab3e0af133f81 X-Mailer: tip-git-log-daemon Robot-ID: Robot-Unsubscribe: Contact to get blacklisted from these emails MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=UTF-8 Content-Disposition: inline Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Commit-ID: f56ebf20d0f535f5da7cfcf0000ab3e0af133f81 Gitweb: http://git.kernel.org/tip/f56ebf20d0f535f5da7cfcf0000ab3e0af133f81 Author: Colin Ian King AuthorDate: Tue, 19 Apr 2016 00:07:18 +0100 Committer: Arnaldo Carvalho de Melo CommitDate: Tue, 19 Apr 2016 12:37:01 -0300 perf jit: memset() variable 'st' using the correct size The current code is memsetting the 'struct stat' variable 'st' with the size of 'stat' (which turns out to be 1 byte) rather than the size of variable 'sz'. Committer notes: sizeof(function) isn't valid, the result depends on the compiler used, with gcc, enabling pedantic warnings we get: $ cat sizeof_function.c #include #include #include #include int main(void) { printf("sizeof(stat)=%zd, stat=%p\n", sizeof(stat), stat); return 0; } $ readelf -sW sizeof_function | grep -w stat 49: 0000000000400630 16 FUNC WEAK HIDDEN 13 stat $ cc -pedantic sizeof_function.c -o sizeof_function sizeof_function.c: In function ‘main’: sizeof_function.c:8:46: warning: invalid application of ‘sizeof’ to a function type [-Wpointer-arith] printf("sizeof(stat)=%zd, stat=%p\n", sizeof(stat), stat); ^ $ ./sizeof_function sizeof(stat)=1, stat=0x400630 $ Standard C, section 6.5.3.4: "The sizeof operator shall not be applied to an expression that has function type or an incomplete type, to the parenthesized name of such a type, or to an expression that designates a bit-field member." http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf Signed-off-by: Colin Ian King Tested-by: Arnaldo Carvalho de Melo Cc: Adrian Hunter Cc: Alexander Shishkin Cc: Peter Zijlstra Cc: Stephane Eranian Fixes: 9b07e27f88b9 ("perf inject: Add jitdump mmap injection support") Link: http://lkml.kernel.org/r/1461020838-9260-1-git-send-email-colin.king@canonical.com Signed-off-by: Arnaldo Carvalho de Melo --- tools/perf/util/jitdump.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/perf/util/jitdump.c b/tools/perf/util/jitdump.c index 52fcef3..86afe96 100644 --- a/tools/perf/util/jitdump.c +++ b/tools/perf/util/jitdump.c @@ -412,7 +412,7 @@ static int jit_repipe_code_load(struct jit_buf_desc *jd, union jr_entry *jr) return -1; } if (stat(filename, &st)) - memset(&st, 0, sizeof(stat)); + memset(&st, 0, sizeof(st)); event->mmap2.header.type = PERF_RECORD_MMAP2; event->mmap2.header.misc = PERF_RECORD_MISC_USER; @@ -500,7 +500,7 @@ static int jit_repipe_code_move(struct jit_buf_desc *jd, union jr_entry *jr) size++; /* for \0 */ if (stat(filename, &st)) - memset(&st, 0, sizeof(stat)); + memset(&st, 0, sizeof(st)); size = PERF_ALIGN(size, sizeof(u64));