Received: by 2002:a05:6520:1682:b0:147:d1a0:b502 with SMTP id ck2csp5595370lkb; Mon, 11 Oct 2021 09:37:36 -0700 (PDT) X-Google-Smtp-Source: ABdhPJws/y6FwCqfA3cbkA/RmG8OjPy8C4R5q3GhRaIXj2rbm5+RMEeOES2NXsXWjdMC+/eMCvFm X-Received: by 2002:a17:90b:33c7:: with SMTP id lk7mr10083pjb.172.1633970256100; Mon, 11 Oct 2021 09:37:36 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1633970256; cv=none; d=google.com; s=arc-20160816; b=WTqhIKFTLcIK6cOyfX0KblanymJGSiAZovTUq6puiNz2ScuRzziDrx9aumQwdDGKzI Y1cuu21EcCvqm1j4GrwCg1Ji7MnnuA3JLnX+19nf3FyCghnCLc3KtUFEhfdaYpDZRfJq DhtqlYORmv68MQxn8eNkiofMY2tgUtSrrJHd0V4AJ0u/7qkYEosI+1tj/knuFFj1PqhL BXUVfFbc0GXK1SEocnzBnkKV9Ll0JWgBQ9WlK6MT8uwbD9hGSRC8PnY5sWTRa4Psf+2F aMWOzCbW1zqCoa0PhHYI6rShi6ymA4Z5Z+H1v391Qw7DphS5dl67ltG+BEHbI+30++oq VDbA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=hYDy/HnG1f2OQXrFAoNd6xNERMT8RV4GdBvcSB9bcT4=; b=KLFa7K7B7jnvOhS+tzgDJfxC5aXSmKoXPsFSxHAmofa04hy9OUpZHUjhvQVd1Csxyc zlrwlUIZxoO7r+OnJKy07UPCtmp8/KGr781qjCSwtpXtiwEDar6mwzdNOiXjwLPbII3z IiSsSOp8WaA7GSyqTl8Ajbd9x4JHjdQly48oXaN0CuhVRAd96rg6bqaMxrkCoHROpsNz 2ENHrRqcCCkinEJpntst4qoHivTk/AvKefXN1xUmD0gRPNLO/5sd1w+RStP+3tugHWxC hYyMG9rkAgeJnKVhIpy7YczdqPy1HGiVlEGw+WyC14PzPVMSI1GOYB6TqAYGrcEeU/la gcgQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=osyEqvPM; 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=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id u4si11764441pgp.53.2021.10.11.09.37.22; Mon, 11 Oct 2021 09:37:36 -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; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=osyEqvPM; 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=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238228AbhJKOOA (ORCPT + 99 others); Mon, 11 Oct 2021 10:14:00 -0400 Received: from mail.kernel.org ([198.145.29.99]:33628 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S243357AbhJKOLP (ORCPT ); Mon, 11 Oct 2021 10:11:15 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 64C9F6108F; Mon, 11 Oct 2021 14:03:01 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1633960982; bh=vmB9cTWWIwuK4nCLY9E66RHiGvgHjoJwABq4pRAy71A=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=osyEqvPMfHrD4O/qUyyfNimhqb27GioIW3gUSnl50dFwd7KNiw+bqGzvqo7gUwfRD N8gEIEbTNsDAYxWkDifWmz0Cp7ar7l2HraB0cfvEeA3gDvl+g84lMTS2nWV9ZXPCZp 0p0t87S8xsTbPzdVuwIAM4gp9CuKdZ+y2nnOL5IU= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Linus Torvalds , Josh Poimboeuf , Peter Zijlstra , x86@kernel.org, Miroslav Benes , Sasha Levin Subject: [PATCH 5.14 131/151] objtool: Remove reloc symbol type checks in get_alt_entry() Date: Mon, 11 Oct 2021 15:46:43 +0200 Message-Id: <20211011134522.038399207@linuxfoundation.org> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20211011134517.833565002@linuxfoundation.org> References: <20211011134517.833565002@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Josh Poimboeuf [ Upstream commit 4d8b35968bbf9e42b6b202eedb510e2c82ad8b38 ] Converting a special section's relocation reference to a symbol is straightforward. No need for objtool to complain that it doesn't know how to handle it. Just handle it. This fixes the following warning: arch/x86/kvm/emulate.o: warning: objtool: __ex_table+0x4: don't know how to handle reloc symbol type: kvm_fastop_exception Fixes: 24ff65257375 ("objtool: Teach get_alt_entry() about more relocation types") Reported-by: Linus Torvalds Signed-off-by: Josh Poimboeuf Link: https://lore.kernel.org/r/feadbc3dfb3440d973580fad8d3db873cbfe1694.1633367242.git.jpoimboe@redhat.com Cc: Peter Zijlstra Cc: x86@kernel.org Cc: Miroslav Benes Cc: linux-kernel@vger.kernel.org Signed-off-by: Sasha Levin --- tools/objtool/special.c | 36 +++++++----------------------------- 1 file changed, 7 insertions(+), 29 deletions(-) diff --git a/tools/objtool/special.c b/tools/objtool/special.c index f1428e32a505..83d5f969bcb0 100644 --- a/tools/objtool/special.c +++ b/tools/objtool/special.c @@ -58,22 +58,11 @@ void __weak arch_handle_alternative(unsigned short feature, struct special_alt * { } -static bool reloc2sec_off(struct reloc *reloc, struct section **sec, unsigned long *off) +static void reloc_to_sec_off(struct reloc *reloc, struct section **sec, + unsigned long *off) { - switch (reloc->sym->type) { - case STT_FUNC: - *sec = reloc->sym->sec; - *off = reloc->sym->offset + reloc->addend; - return true; - - case STT_SECTION: - *sec = reloc->sym->sec; - *off = reloc->addend; - return true; - - default: - return false; - } + *sec = reloc->sym->sec; + *off = reloc->sym->offset + reloc->addend; } static int get_alt_entry(struct elf *elf, struct special_entry *entry, @@ -109,13 +98,8 @@ static int get_alt_entry(struct elf *elf, struct special_entry *entry, WARN_FUNC("can't find orig reloc", sec, offset + entry->orig); return -1; } - if (!reloc2sec_off(orig_reloc, &alt->orig_sec, &alt->orig_off)) { - WARN_FUNC("don't know how to handle reloc symbol type %d: %s", - sec, offset + entry->orig, - orig_reloc->sym->type, - orig_reloc->sym->name); - return -1; - } + + reloc_to_sec_off(orig_reloc, &alt->orig_sec, &alt->orig_off); if (!entry->group || alt->new_len) { new_reloc = find_reloc_by_dest(elf, sec, offset + entry->new); @@ -133,13 +117,7 @@ static int get_alt_entry(struct elf *elf, struct special_entry *entry, if (arch_is_retpoline(new_reloc->sym)) return 1; - if (!reloc2sec_off(new_reloc, &alt->new_sec, &alt->new_off)) { - WARN_FUNC("don't know how to handle reloc symbol type %d: %s", - sec, offset + entry->new, - new_reloc->sym->type, - new_reloc->sym->name); - return -1; - } + reloc_to_sec_off(new_reloc, &alt->new_sec, &alt->new_off); /* _ASM_EXTABLE_EX hack */ if (alt->new_off >= 0x7ffffff0) -- 2.33.0