Received: by 2002:a25:1985:0:0:0:0:0 with SMTP id 127csp749963ybz; Wed, 15 Apr 2020 18:08:02 -0700 (PDT) X-Google-Smtp-Source: APiQypIZ6FAqEM9o6NViJHVgcSWshTUU6HvxZ7Tf/Q1G7jWjsWJKLQDLmHRjZZlBeew4fePwIDPu X-Received: by 2002:a50:950a:: with SMTP id u10mr17331830eda.45.1586999282571; Wed, 15 Apr 2020 18:08:02 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1586999282; cv=none; d=google.com; s=arc-20160816; b=G7pvXbMVEQOV1uKURQn5AgKSlScc3S9FI3UNLVjXpSP4e2siiAdZOLvRejehKTAd8v KoNR4oC9do7Rj+hCIfxjXcpl9jzQ9n4K/uOG2XniCY3HtezIadj1jLXX+fF1Q7tHvZH5 CTMH//JM382C65gFgcrXBN9o7dtsSi9vdBqJ7cZe2Urk6l+nUZR4T8PO9vo/sctiq5Hu fEcqW5JjAPPVjqmzSn6MfpTridbZdsvJEx2R2Wm0PNvO7GW//3xNUg5dpup7224V+6GY 0M+wGavj8KArVQr+w/pevF4cke0+Gt0RmjXdgj4ftGBwSmsIiytcBAGwy2iBlSok+Lat DdsA== 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 :ironport-sdr:ironport-sdr; bh=TJ/N1m4owdjlhFQ+KkKB4hLpk2z8AbVz3meVJaFRyFc=; b=PBk9NpYujSRooGE7v02QWbk1KZ/yfR6x6cbbUWx5CJKSDOT+88Jnu21hVqVyJTbZ7C jEVvPDENWWi2YenHcKkGK45FRzp4XJDWVLLeyxgVJ8vodkvSBdWUZYllD6iI8ORCeM/3 gdyF7DTlBTQ6s7rIHKLRhbK4AafM71Wz07QRWRPivCrjZ2t7qKE76y/FIQRzhIRuDLRr WDE5sbsJsVS9o73RYYrAQdIaIuLydv8J4FE8Zg1gXX8A+fthRo/BCUAtUkbtZIgsv2Q0 i7VzS7HkSTwbwDYcDZiJbvXO/J17RKujnipYDYQizfMSOIIZvKxMt908JkSBtnjNGuFg HTSg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id x17si10971296edi.378.2020.04.15.18.07.38; Wed, 15 Apr 2020 18:08:02 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2442226AbgDOVFa (ORCPT + 99 others); Wed, 15 Apr 2020 17:05:30 -0400 Received: from mga09.intel.com ([134.134.136.24]:27159 "EHLO mga09.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2438738AbgDOVFI (ORCPT ); Wed, 15 Apr 2020 17:05:08 -0400 IronPort-SDR: mzK8F/APhGhoy9+SSrg2Qg1LC4wMPzBwwPcLZUF1db3E9MQzXFvXmnlOd1A8VMObIlgGyEoeG2 zwU1YqsVynPg== X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by orsmga102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 Apr 2020 14:05:07 -0700 IronPort-SDR: wvo3hL9eNFcosc6V4uN+7Pt6fE3JfkOFJ2RXv84ZK2w4YDSzeRVy+Bowm7aQ4lFvhm6jlCKR2E hvAXA+ZLX16w== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.72,388,1580803200"; d="scan'208";a="455035474" Received: from kcaccard-mobl.amr.corp.intel.com (HELO kcaccard-mobl1.jf.intel.com) ([10.209.116.191]) by fmsmga006.fm.intel.com with ESMTP; 15 Apr 2020 14:05:05 -0700 From: Kristen Carlson Accardi To: keescook@chromium.org, tglx@linutronix.de, mingo@redhat.com, bp@alien8.de, hpa@zytor.com, Josh Poimboeuf , Peter Zijlstra Cc: arjan@linux.intel.com, x86@kernel.org, linux-kernel@vger.kernel.org, kernel-hardening@lists.openwall.com, rick.p.edgecomb@intel.com Subject: [PATCH 1/9] objtool: do not assume order of parent/child functions Date: Wed, 15 Apr 2020 14:04:43 -0700 Message-Id: <20200415210452.27436-2-kristen@linux.intel.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200415210452.27436-1-kristen@linux.intel.com> References: <20200415210452.27436-1-kristen@linux.intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org If a .cold function is examined prior to it's parent, the link to the parent/child function can be overwritten when the parent is examined. Only update pfunc and cfunc if they were previously nil to prevent this from happening. Signed-off-by: Kristen Carlson Accardi Acked-by: Josh Poimboeuf --- tools/objtool/elf.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/tools/objtool/elf.c b/tools/objtool/elf.c index 09ddc8f1def3..2aa40f344392 100644 --- a/tools/objtool/elf.c +++ b/tools/objtool/elf.c @@ -408,7 +408,13 @@ static int read_symbols(struct elf *elf) size_t pnamelen; if (sym->type != STT_FUNC) continue; - sym->pfunc = sym->cfunc = sym; + + if (sym->pfunc == NULL) + sym->pfunc = sym; + + if (sym->cfunc == NULL) + sym->cfunc = sym; + coldstr = strstr(sym->name, ".cold"); if (!coldstr) continue; -- 2.20.1