From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id A8CD1C433FE for ; Wed, 12 Oct 2022 08:23:15 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229550AbiJLIXO (ORCPT ); Wed, 12 Oct 2022 04:23:14 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38132 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229513AbiJLIXN (ORCPT ); Wed, 12 Oct 2022 04:23:13 -0400 Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9C73B38A6; Wed, 12 Oct 2022 01:23:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1665562992; x=1697098992; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=v7FVYg64Th6s/xxLEwgdkJaJwh8LfZ78aiIlIIAHTE0=; b=br9fpRB47XkdoZJJ9IMjKK5BvtV3e8nkJnXDyFEymGpUEqLCnOAMrVtt tJ3eGe7Hoh5hqt6+EXeUZy8OmhTwXh1uXjDJ/T6APGYN25vGCIPQfzb12 MwSrGoLoDayEJR1zvgvmTft5+/ngbdmrPi61uSAoaDHD2D6uSOO6UinMD DCd9fcu7YbrfCJxS3KDj4Z5IIXmEUIgXNK9CsFPVbmbDItpP3+bioHeL3 ZO1h5IBefnKfDBqvtPW1IjBvx6Q7sI0TmP9xLRi+LjycrYz/GGXqOxnP+ 8KTHbyPm5fSayTCn65NCZuFD9IH4o1hZRmLyJttVZGT3KO+hrA2d6SGq8 w==; X-IronPort-AV: E=McAfee;i="6500,9779,10497"; a="303472956" X-IronPort-AV: E=Sophos;i="5.95,178,1661842800"; d="scan'208";a="303472956" Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by fmsmga104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 Oct 2022 01:23:12 -0700 X-IronPort-AV: E=McAfee;i="6500,9779,10497"; a="955665503" X-IronPort-AV: E=Sophos;i="5.95,178,1661842800"; d="scan'208";a="955665503" Received: from ahunter6-mobl1.ger.corp.intel.com (HELO ahunter-VirtualBox.home\044ger.corp.intel.com) ([10.252.42.132]) by fmsmga005-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 Oct 2022 01:23:10 -0700 From: Adrian Hunter To: Arnaldo Carvalho de Melo Cc: Jiri Olsa , Namhyung Kim , Ian Rogers , linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org Subject: [PATCH 1/2] perf intel-pt: Fix segfault in intel_pt_print_info() with uClibc Date: Wed, 12 Oct 2022 11:22:58 +0300 Message-Id: <20221012082259.22394-2-adrian.hunter@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20221012082259.22394-1-adrian.hunter@intel.com> References: <20221012082259.22394-1-adrian.hunter@intel.com> MIME-Version: 1.0 Organization: Intel Finland Oy, Registered Address: PL 281, 00181 Helsinki, Business Identity Code: 0357606 - 4, Domiciled in Helsinki Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-perf-users@vger.kernel.org uClibc segfaulted because NULL was passed as the format to fprintf(). That happened because one of the format strings was missing and intel_pt_print_info() didn't check that before calling fprintf(). Add the missing format string, and check format is not NULL before calling fprintf(). Fixes: 11fa7cb86b56 ("perf tools: Pass Intel PT information for decoding MTC and CYC") Cc: stable@vger.kernel.org Signed-off-by: Adrian Hunter --- tools/perf/util/intel-pt.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/tools/perf/util/intel-pt.c b/tools/perf/util/intel-pt.c index b34cb3dec1aa..e3548ddef254 100644 --- a/tools/perf/util/intel-pt.c +++ b/tools/perf/util/intel-pt.c @@ -4046,6 +4046,7 @@ static const char * const intel_pt_info_fmts[] = { [INTEL_PT_SNAPSHOT_MODE] = " Snapshot mode %"PRId64"\n", [INTEL_PT_PER_CPU_MMAPS] = " Per-cpu maps %"PRId64"\n", [INTEL_PT_MTC_BIT] = " MTC bit %#"PRIx64"\n", + [INTEL_PT_MTC_FREQ_BITS] = " MTC freq bits %#"PRIx64"\n", [INTEL_PT_TSC_CTC_N] = " TSC:CTC numerator %"PRIu64"\n", [INTEL_PT_TSC_CTC_D] = " TSC:CTC denominator %"PRIu64"\n", [INTEL_PT_CYC_BIT] = " CYC bit %#"PRIx64"\n", @@ -4060,8 +4061,12 @@ static void intel_pt_print_info(__u64 *arr, int start, int finish) if (!dump_trace) return; - for (i = start; i <= finish; i++) - fprintf(stdout, intel_pt_info_fmts[i], arr[i]); + for (i = start; i <= finish; i++) { + const char *fmt = intel_pt_info_fmts[i]; + + if (fmt) + fprintf(stdout, fmt, arr[i]); + } } static void intel_pt_print_info_str(const char *name, const char *str) -- 2.25.1