Received: by 2002:a25:ad19:0:0:0:0:0 with SMTP id y25csp7828083ybi; Tue, 9 Jul 2019 05:04:47 -0700 (PDT) X-Google-Smtp-Source: APXvYqyC9HUWrmFk49BnsjgY+jqJc0TMpy9euG75jkHEEkZwrqZ76V+0g8qX/k5y52RqrKIPGYbk X-Received: by 2002:a17:902:1e6:: with SMTP id b93mr31290400plb.295.1562673887320; Tue, 09 Jul 2019 05:04:47 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1562673887; cv=none; d=google.com; s=arc-20160816; b=JiUN+9RhecrWI/KIj9E1DDp7w6bby4Vzs13P2ZXkunsPUtxOnVtp2owCftL2604LFR MkuuBoQc3EJrN8nqQsFe5dWVtqGvfRb8PGoaTRTiPIOIMW9QAo/qhV4opMg206iKYp8M 0btanF455slMwdd/8+C4sBsRW/G2JzDq3UjmcqbFCEQOwzWpCfYQed78di/QzjaLrc6M aNDbhsyWc8CL/F5TPT4Yrx2EJL6psZH7uISVy8QxiNFd+RZKzlWRglWGgNMG1szVqHhz 4huy7GXZCLQ/m4gpKQE5OnEdeKFKNOU9btL7VObmVqsy+6JlMb0d3b1twI9cAhnfCvfd CtUA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-disposition :content-transfer-encoding:mime-version:robot-unsubscribe:robot-id :git-commit-id:subject:to:references:in-reply-to:reply-to:cc :message-id:from:date:dkim-signature:dkim-filter; bh=8Vbxk8QdqLEFV6UvNTwaY5xser5lGsQ19iYB/COOvr0=; b=VPsliSzmzE4X+Kxtd3mdUx63Ua0eMt36UMm0Ux6E4bmv84bfqnke3SzFbduOLT3aql ggGeBgUidfsh5qBvbLYb7hSWNd6mOoM0PGFj/BDzomre8gHvJTPAVPYGnECbAlLoVJVC GJc1e3/6egZmCLo8+0TZ2w/d5TiN65wyxYrUd7XtwbwZIeur1Lfo+JeSCsI3xzI0GdXw nJdDIZHGYR6TedyPDcP8f+V2BKSXnwnqCHDE9Wu+g7qlAe3lRqGVcfWUKqSQVR87K5NF K6nh/Zi1BsOZf7hq60QEXo4ID6QQSeJfNltBBUdLHZQuS7QD62E9HuHI5Y5fcpuurGtr 4zDw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@zytor.com header.s=2019061801 header.b=jM4R7WXr; 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=zytor.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id w188si709309pfb.175.2019.07.09.05.04.30; Tue, 09 Jul 2019 05:04:47 -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=@zytor.com header.s=2019061801 header.b=jM4R7WXr; 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=zytor.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726780AbfGIMDj (ORCPT + 99 others); Tue, 9 Jul 2019 08:03:39 -0400 Received: from terminus.zytor.com ([198.137.202.136]:54571 "EHLO terminus.zytor.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726030AbfGIMDj (ORCPT ); Tue, 9 Jul 2019 08:03:39 -0400 Received: from terminus.zytor.com (localhost [127.0.0.1]) by terminus.zytor.com (8.15.2/8.15.2) with ESMTPS id x69C268W1901887 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NO); Tue, 9 Jul 2019 05:02:06 -0700 DKIM-Filter: OpenDKIM Filter v2.11.0 terminus.zytor.com x69C268W1901887 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=zytor.com; s=2019061801; t=1562673727; bh=8Vbxk8QdqLEFV6UvNTwaY5xser5lGsQ19iYB/COOvr0=; h=Date:From:Cc:Reply-To:In-Reply-To:References:To:Subject:From; b=jM4R7WXrOv1gkqXDq6s6AuTjqv+k5eyB+TyU+Qvl0qC6sJxoKQlLB/T+qYg5N9ldb femitzxQ0dY47ESWsCVBAsoGW/mQ0C2WZzpIWYZfa/ejpSHWLFqP0spM35T6KBFvPk Tv1bL6xTcNPzH0HXmf78h2RbBoG8qdnpnKm9uNhxI+FHAtv2MbarirGuAUE1ZzuMCU iooMXmv9KtLBl3s+7jUbhy1quZKAMOFZRt0NPjDpdoxUTLMR9e3DCbfofWAhpvWBRG BEP4BtaQJHl0TTcuD3zlmKob7RX2I+hFwMhNnHQA9hr8JrHOcx4ChibjNSgz4UOJRE S04oNd/X/7l5Q== Received: (from tipbot@localhost) by terminus.zytor.com (8.15.2/8.15.2/Submit) id x69C25ug1901884; Tue, 9 Jul 2019 05:02:05 -0700 Date: Tue, 9 Jul 2019 05:02:05 -0700 X-Authentication-Warning: terminus.zytor.com: tipbot set sender to tipbot@zytor.com using -f From: tip-bot for Josh Poimboeuf Message-ID: Cc: ast@kernel.org, hpa@zytor.com, rostedt@goodmis.org, jpoimboe@redhat.com, kasong@redhat.com, mingo@kernel.org, peterz@infradead.org, bp@alien8.de, songliubraving@fb.com, tglx@linutronix.de, linux-kernel@vger.kernel.org, daniel@iogearbox.net Reply-To: daniel@iogearbox.net, tglx@linutronix.de, linux-kernel@vger.kernel.org, mingo@kernel.org, peterz@infradead.org, songliubraving@fb.com, bp@alien8.de, kasong@redhat.com, jpoimboe@redhat.com, rostedt@goodmis.org, hpa@zytor.com, ast@kernel.org In-Reply-To: <881939122b88f32be4c374d248c09d7527a87e35.1561685471.git.jpoimboe@redhat.com> References: <881939122b88f32be4c374d248c09d7527a87e35.1561685471.git.jpoimboe@redhat.com> To: linux-tip-commits@vger.kernel.org Subject: [tip:x86/debug] bpf: Fix ORC unwinding in non-JIT BPF code Git-Commit-ID: e55a73251da335873a6e87d68fb17e5aabb8978e X-Mailer: tip-git-log-daemon Robot-ID: Robot-Unsubscribe: Contact to get blacklisted from these emails MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=UTF-8 Content-Disposition: inline X-Spam-Status: No, score=-1.2 required=5.0 tests=ALL_TRUSTED,BAYES_00, DATE_IN_FUTURE_06_12,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU, DKIM_VALID_EF autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on terminus.zytor.com Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Commit-ID: e55a73251da335873a6e87d68fb17e5aabb8978e Gitweb: https://git.kernel.org/tip/e55a73251da335873a6e87d68fb17e5aabb8978e Author: Josh Poimboeuf AuthorDate: Thu, 27 Jun 2019 20:50:47 -0500 Committer: Ingo Molnar CommitDate: Tue, 9 Jul 2019 13:55:57 +0200 bpf: Fix ORC unwinding in non-JIT BPF code Objtool previously ignored ___bpf_prog_run() because it didn't understand the jump table. This resulted in the ORC unwinder not being able to unwind through non-JIT BPF code. Now that objtool knows how to read jump tables, remove the whitelist and annotate the jump table so objtool can recognize it. Also add an additional "const" to the jump table definition to clarify that the text pointers are constant. Otherwise GCC sets the section writable flag and the assembler spits out warnings. Fixes: d15d356887e7 ("perf/x86: Make perf callchains work without CONFIG_FRAME_POINTER") Reported-by: Song Liu Signed-off-by: Josh Poimboeuf Signed-off-by: Thomas Gleixner Acked-by: Alexei Starovoitov Cc: Peter Zijlstra Cc: Kairui Song Cc: Steven Rostedt Cc: Borislav Petkov Cc: Daniel Borkmann Link: https://lkml.kernel.org/r/881939122b88f32be4c374d248c09d7527a87e35.1561685471.git.jpoimboe@redhat.com Signed-off-by: Ingo Molnar --- kernel/bpf/core.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/kernel/bpf/core.c b/kernel/bpf/core.c index 080e2bb644cc..1e12ac382a90 100644 --- a/kernel/bpf/core.c +++ b/kernel/bpf/core.c @@ -1299,7 +1299,7 @@ static u64 ___bpf_prog_run(u64 *regs, const struct bpf_insn *insn, u64 *stack) { #define BPF_INSN_2_LBL(x, y) [BPF_##x | BPF_##y] = &&x##_##y #define BPF_INSN_3_LBL(x, y, z) [BPF_##x | BPF_##y | BPF_##z] = &&x##_##y##_##z - static const void *jumptable[256] = { + static const void * const jumptable[256] __annotate_jump_table = { [0 ... 255] = &&default_label, /* Now overwrite non-defaults ... */ BPF_INSN_MAP(BPF_INSN_2_LBL, BPF_INSN_3_LBL), @@ -1558,7 +1558,6 @@ out: BUG_ON(1); return 0; } -STACK_FRAME_NON_STANDARD(___bpf_prog_run); /* jump table */ #define PROG_NAME(stack_size) __bpf_prog_run##stack_size #define DEFINE_BPF_PROG_RUN(stack_size) \