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 X-Spam-Level: X-Spam-Status: No, score=-10.0 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id D2B54C433E1 for ; Mon, 3 Aug 2020 12:30:38 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id A5A23208E4 for ; Mon, 3 Aug 2020 12:30:38 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1596457838; bh=25NRMhky5p8NZeSWlXQ16BfjITFXelalLZidKBhsFJY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:List-ID:From; b=bQIRBYoV0/8rPJp0mX5foiO5Ae8fp4wO1TWnsCcG//OVtwA8FAsOPNDlPW2CvmOHo FBjk34y2mZTxqCacQ7AkAo//s8WbP2TbCuf3mgazQUMt7ekD14WnQS9v+aZ0so/rZi AE/gXmO62Ib49vB00kRJIRGu3TUp5N3zFkTiwXAI= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729069AbgHCMah (ORCPT ); Mon, 3 Aug 2020 08:30:37 -0400 Received: from mail.kernel.org ([198.145.29.99]:57640 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729077AbgHCMag (ORCPT ); Mon, 3 Aug 2020 08:30:36 -0400 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 68C802054F; Mon, 3 Aug 2020 12:30:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1596457834; bh=25NRMhky5p8NZeSWlXQ16BfjITFXelalLZidKBhsFJY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=1SDmvSxkpQ8HrGGQs76MLnX6wT3B4BVOzPrqO0eG+ZQhyR1gcJkWj4FLQ/XPrqJns 0/V0uXMIMHKG98punpWNdJmkzErRmizyGd9Ri2Ig0fJKkHz1f1vLZyyRs2WYwwQW2N EigOes3qUumqeOBY3uAd7Lhz49cuTL+Bp9lRuM58= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Jiri Olsa , Adrian Hunter , Namhyung Kim , Arnaldo Carvalho de Melo , Ben Hutchings Subject: [PATCH 5.4 89/90] perf env: Do not return pointers to local variables Date: Mon, 3 Aug 2020 14:19:51 +0200 Message-Id: <20200803121901.890561589@linuxfoundation.org> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20200803121857.546052424@linuxfoundation.org> References: <20200803121857.546052424@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: stable-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: stable@vger.kernel.org From: Arnaldo Carvalho de Melo commit ebcb9464a2ae3a547e97de476575c82ece0e93e2 upstream. It is possible to return a pointer to a local variable when looking up the architecture name for the running system and no normalization is done on that value, i.e. we may end up returning the uts.machine local variable. While this doesn't happen on most arches, as normalization takes place, lets fix this by making that a static variable and optimize it a bit by not always running uname(), only the first time. Noticed in fedora rawhide running with: [perfbuilder@a5ff49d6e6e4 ~]$ gcc --version gcc (GCC) 10.0.1 20200216 (Red Hat 10.0.1-0.8) Reported-by: Jiri Olsa Cc: Adrian Hunter Cc: Namhyung Kim Signed-off-by: Arnaldo Carvalho de Melo Cc: Ben Hutchings Signed-off-by: Greg Kroah-Hartman --- tools/perf/util/env.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --- a/tools/perf/util/env.c +++ b/tools/perf/util/env.c @@ -326,11 +326,11 @@ static const char *normalize_arch(char * const char *perf_env__arch(struct perf_env *env) { - struct utsname uts; char *arch_name; if (!env || !env->arch) { /* Assume local operation */ - if (uname(&uts) < 0) + static struct utsname uts = { .machine[0] = '\0', }; + if (uts.machine[0] == '\0' && uname(&uts) < 0) return NULL; arch_name = uts.machine; } else