Received: by 2002:a25:8b91:0:0:0:0:0 with SMTP id j17csp1768715ybl; Sat, 11 Jan 2020 02:26:19 -0800 (PST) X-Google-Smtp-Source: APXvYqx+PoDp2cIiff2pMcdzparLteUwElNxlKJMqYJ81RstS+oKf1pvSUvpCtfDVM77PenJ52pn X-Received: by 2002:aca:2109:: with SMTP id 9mr5458161oiz.119.1578738379765; Sat, 11 Jan 2020 02:26:19 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1578738379; cv=none; d=google.com; s=arc-20160816; b=iGbGvHlrUaCjzmAvRLdae31QyRXg8tT9RQjuP5cfr0h9tEp4Qm/DQp9mMiNIyYYta4 Mdwpo4TchgtUhJ8c53zFm62pSqfLGDGfW5TTkMQjWVLM6LlxogK2wwdmuN+YFRnbfg0y Hfl//FYcS5RRGeGDCsSlEofMmJeezggsDtHrt8BJE2MTEgilCZR0szhcIvmUghglfJFS ye1hfdNCDdPVuKp94q37SbbNruLVopJEzqoEco5Qh8uE/iWTDdR0CC05bF06askpUnBi /I1OG5Q9OF9EDy5Qqc11WbtoHlGgNY8fxhygY6x4ZKcAMf3PbuUuLR3IzzoIAHnIgJEJ kdZg== 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 :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=2+ecxb7UIx/Ap1hhWSZCKXDdP8RQiLYk9RTKSLuq5Ek=; b=c9S1cvri+RFAmn6CHhRds2Egzgn20jHWK6KIFNWzfQhk+cwF92pyKdbxwX6ZKt6dYv 5WBhALpXKUk+YwCqn2ssn31qwxM57YNV+9wE9nfY/y3UDFG5eJ/acCNpLe7t42wxSXu+ jlNnVu1eA1s3792Z1Lc9pbjbzuuaEzxwVlMn9JyUMMlVsVC6Tjpr3JXCH1QyJXTH6eDA s64Z42YvWjgL5A/lFhDOAU92vfj/tK/Pko+7kgY8UL87gCjSnauB56xwwtdmrd0N1HL6 dIT/W60gnVC5nT8oO8DlqVJZ1boTNnflrma0Cpxw9cM503qpbLZHSNH3Kfv/P3LAYSmm 4s6g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=szwNqUxy; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id v10si965388ote.97.2020.01.11.02.26.08; Sat, 11 Jan 2020 02:26:19 -0800 (PST) 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=szwNqUxy; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730908AbgAKKZS (ORCPT + 99 others); Sat, 11 Jan 2020 05:25:18 -0500 Received: from mail.kernel.org ([198.145.29.99]:55770 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730627AbgAKKZR (ORCPT ); Sat, 11 Jan 2020 05:25:17 -0500 Received: from localhost (unknown [62.119.166.9]) (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 43D822082E; Sat, 11 Jan 2020 10:25:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1578738316; bh=y5ZUJdBGvEd9wU+ozgECUMyVdZfnmtAjppTvIhvO/fw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=szwNqUxyKcfeX/v9VpefpvgFTlmCcHpjgoj/zMMyu3BREsbF67R1uS4lqcNx0AHwL FUpLGPdupd7K1i5nbaTF5jjbjKmkpa/7Dji4H8dgi/AnLVFMnjexwR1eqWhZzV4sCT rGGOW76OLT5xkDKDgxVLG0eDMbEmjUiJ0J3pyn3Y= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, =?UTF-8?q?Toke=20H=C3=B8iland-J=C3=B8rgensen?= , Daniel Borkmann , Martin KaFai Lau , Sasha Levin Subject: [PATCH 5.4 055/165] bpftool: Dont crash on missing jited insns or ksyms Date: Sat, 11 Jan 2020 10:49:34 +0100 Message-Id: <20200111094925.886400657@linuxfoundation.org> X-Mailer: git-send-email 2.24.1 In-Reply-To: <20200111094921.347491861@linuxfoundation.org> References: <20200111094921.347491861@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Toke Høiland-Jørgensen [ Upstream commit 5b79bcdf03628a3a9ee04d9cd5fabcf61a8e20be ] When the kptr_restrict sysctl is set, the kernel can fail to return jited_ksyms or jited_prog_insns, but still have positive values in nr_jited_ksyms and jited_prog_len. This causes bpftool to crash when trying to dump the program because it only checks the len fields not the actual pointers to the instructions and ksyms. Fix this by adding the missing checks. Fixes: 71bb428fe2c1 ("tools: bpf: add bpftool") Fixes: f84192ee00b7 ("tools: bpftool: resolve calls without using imm field") Signed-off-by: Toke Høiland-Jørgensen Signed-off-by: Daniel Borkmann Acked-by: Martin KaFai Lau Link: https://lore.kernel.org/bpf/20191210181412.151226-1-toke@redhat.com Signed-off-by: Sasha Levin --- tools/bpf/bpftool/prog.c | 2 +- tools/bpf/bpftool/xlated_dumper.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/bpf/bpftool/prog.c b/tools/bpf/bpftool/prog.c index 43fdbbfe41bb..ea0bcd58bcb9 100644 --- a/tools/bpf/bpftool/prog.c +++ b/tools/bpf/bpftool/prog.c @@ -493,7 +493,7 @@ static int do_dump(int argc, char **argv) info = &info_linear->info; if (mode == DUMP_JITED) { - if (info->jited_prog_len == 0) { + if (info->jited_prog_len == 0 || !info->jited_prog_insns) { p_info("no instructions returned"); goto err_free; } diff --git a/tools/bpf/bpftool/xlated_dumper.c b/tools/bpf/bpftool/xlated_dumper.c index 494d7ae3614d..5b91ee65a080 100644 --- a/tools/bpf/bpftool/xlated_dumper.c +++ b/tools/bpf/bpftool/xlated_dumper.c @@ -174,7 +174,7 @@ static const char *print_call(void *private_data, struct kernel_sym *sym; if (insn->src_reg == BPF_PSEUDO_CALL && - (__u32) insn->imm < dd->nr_jited_ksyms) + (__u32) insn->imm < dd->nr_jited_ksyms && dd->jited_ksyms) address = dd->jited_ksyms[insn->imm]; sym = kernel_syms_search(dd, address); -- 2.20.1