Received: by 2002:a25:c593:0:0:0:0:0 with SMTP id v141csp874206ybe; Wed, 4 Sep 2019 09:01:39 -0700 (PDT) X-Google-Smtp-Source: APXvYqwiAkFeb14K/iafgLQWpzarKS513MRdq56jeAAnx997b2hoQcwI86xpsVeKra0SA/uVm05s X-Received: by 2002:a17:90a:3d03:: with SMTP id h3mr5810455pjc.49.1567612899652; Wed, 04 Sep 2019 09:01:39 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1567612899; cv=none; d=google.com; s=arc-20160816; b=QWxea2HfS547D1dUL3SpERTlckgcdM7we9vmbmWYdig2aK/yxqRtEcKAQpj+tQ01C+ jxUM4YjWqxf1I/Sl/77BEU20ww8acch0N31vWthyYQmb/fvLFPcot9WlUyWPsMgzN8VD ZOwUHnvZqwwf7pE3/4DoDveIuuk0IR0gFFqjmrbkiAJv6esG72TFQMj/cgigBJu9FjMe mm5fSt/EpeDK6CRC8qKIg326g9kVo0IjvgBYIFt+3OeRsQdpwu0s2Rum3oJGmYhwO1sh Rfswu3gzbb+RE33yg6MzgIY3pYQKUckFbGpsK4TDBSjhZSu5TGk++Y4Sfiwwc4+fEbHD Uuug== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=nwuC2wN7aRKzs0i5CQSqZlGeay4RVU1HRzzzZtTIRGw=; b=hZ78FA5jlWBfy56sKkQRJu2h0hO1pREebZjZ4GnuH6eS++gZVVbwNWSqvUuVpEl88m 0T1jnDDH4Ypiue4F5QPuawm5pGSHm5ee/5cVtxFTvVSpyDPHgGuoEtUgMaQLG9X6jF1d ovMG7LZtTBNGaLBF8AyxnYbgNsFu2Fg4rNKYF0rAOIrmNxobb6I6C98MG2gmV0jPcVXk qQL4fEvzdZQYJwmv9ZFmf9LT1LWjlZ/vIqefoq/A/OgoO2agl2h/iJgi7GhHBOJnXAVV ySHKNe2xX7+xnrsVuxj+m3l8kqOY7108dMVrqp+LXf90EY8o5WzcJm58GelEK/rriOre Ghqg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=BnKu8VcS; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id v12si10840490pfi.156.2019.09.04.09.01.22; Wed, 04 Sep 2019 09:01:39 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=BnKu8VcS; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1732499AbfIDP7y (ORCPT + 99 others); Wed, 4 Sep 2019 11:59:54 -0400 Received: from mail.kernel.org ([198.145.29.99]:34306 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1732465AbfIDP7o (ORCPT ); Wed, 4 Sep 2019 11:59:44 -0400 Received: from sasha-vm.mshome.net (c-73-47-72-35.hsd1.nh.comcast.net [73.47.72.35]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id B94CD20820; Wed, 4 Sep 2019 15:59:42 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1567612783; bh=gZSnvrdLULxwjHSAUZkDCTpkQxwg/SW7rI52snceEtM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=BnKu8VcSp3lxODEFAdEQ8tvfBPM/mMgdgDMwgrcxlJ/nfO/C9x7t3d1fJOdS8TfJ+ jA96yYwCl5QC3iXppgPvni4+5EAL5Ki1m7U84y8sxWrFWJReY3V/4P023ZkLVFkuM/ JCvmeHaroolavxbBzEQW5vqAHS8F63UMn4djnRek= From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Ben Hutchings , Len Brown , Sasha Levin Subject: [PATCH AUTOSEL 5.2 79/94] tools/power x86_energy_perf_policy: Fix "uninitialized variable" warnings at -O2 Date: Wed, 4 Sep 2019 11:57:24 -0400 Message-Id: <20190904155739.2816-79-sashal@kernel.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190904155739.2816-1-sashal@kernel.org> References: <20190904155739.2816-1-sashal@kernel.org> MIME-Version: 1.0 X-stable: review X-Patchwork-Hint: Ignore Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Ben Hutchings [ Upstream commit adb8049097a9ec4acd09fbd3aa8636199a78df8a ] x86_energy_perf_policy first uses __get_cpuid() to check the maximum CPUID level and exits if it is too low. It then assumes that later calls will succeed (which I think is architecturally guaranteed). It also assumes that CPUID works at all (which is not guaranteed on x86_32). If optimisations are enabled, gcc warns about potentially uninitialized variables. Fix this by adding an exit-on-error after every call to __get_cpuid() instead of just checking the maximum level. Signed-off-by: Ben Hutchings Signed-off-by: Len Brown Signed-off-by: Sasha Levin --- .../x86_energy_perf_policy.c | 26 +++++++++++-------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/tools/power/x86/x86_energy_perf_policy/x86_energy_perf_policy.c b/tools/power/x86/x86_energy_perf_policy/x86_energy_perf_policy.c index 34a796b303fe2..7663abef51e96 100644 --- a/tools/power/x86/x86_energy_perf_policy/x86_energy_perf_policy.c +++ b/tools/power/x86/x86_energy_perf_policy/x86_energy_perf_policy.c @@ -1259,6 +1259,15 @@ void probe_dev_msr(void) if (system("/sbin/modprobe msr > /dev/null 2>&1")) err(-5, "no /dev/cpu/0/msr, Try \"# modprobe msr\" "); } + +static void get_cpuid_or_exit(unsigned int leaf, + unsigned int *eax, unsigned int *ebx, + unsigned int *ecx, unsigned int *edx) +{ + if (!__get_cpuid(leaf, eax, ebx, ecx, edx)) + errx(1, "Processor not supported\n"); +} + /* * early_cpuid() * initialize turbo_is_enabled, has_hwp, has_epb @@ -1266,15 +1275,10 @@ void probe_dev_msr(void) */ void early_cpuid(void) { - unsigned int eax, ebx, ecx, edx, max_level; + unsigned int eax, ebx, ecx, edx; unsigned int fms, family, model; - __get_cpuid(0, &max_level, &ebx, &ecx, &edx); - - if (max_level < 6) - errx(1, "Processor not supported\n"); - - __get_cpuid(1, &fms, &ebx, &ecx, &edx); + get_cpuid_or_exit(1, &fms, &ebx, &ecx, &edx); family = (fms >> 8) & 0xf; model = (fms >> 4) & 0xf; if (family == 6 || family == 0xf) @@ -1288,7 +1292,7 @@ void early_cpuid(void) bdx_highest_ratio = msr & 0xFF; } - __get_cpuid(0x6, &eax, &ebx, &ecx, &edx); + get_cpuid_or_exit(0x6, &eax, &ebx, &ecx, &edx); turbo_is_enabled = (eax >> 1) & 1; has_hwp = (eax >> 7) & 1; has_epb = (ecx >> 3) & 1; @@ -1306,7 +1310,7 @@ void parse_cpuid(void) eax = ebx = ecx = edx = 0; - __get_cpuid(0, &max_level, &ebx, &ecx, &edx); + get_cpuid_or_exit(0, &max_level, &ebx, &ecx, &edx); if (ebx == 0x756e6547 && edx == 0x49656e69 && ecx == 0x6c65746e) genuine_intel = 1; @@ -1315,7 +1319,7 @@ void parse_cpuid(void) fprintf(stderr, "CPUID(0): %.4s%.4s%.4s ", (char *)&ebx, (char *)&edx, (char *)&ecx); - __get_cpuid(1, &fms, &ebx, &ecx, &edx); + get_cpuid_or_exit(1, &fms, &ebx, &ecx, &edx); family = (fms >> 8) & 0xf; model = (fms >> 4) & 0xf; stepping = fms & 0xf; @@ -1340,7 +1344,7 @@ void parse_cpuid(void) errx(1, "CPUID: no MSR"); - __get_cpuid(0x6, &eax, &ebx, &ecx, &edx); + get_cpuid_or_exit(0x6, &eax, &ebx, &ecx, &edx); /* turbo_is_enabled already set */ /* has_hwp already set */ has_hwp_notify = eax & (1 << 8); -- 2.20.1