Received: by 2002:a25:ad19:0:0:0:0:0 with SMTP id y25csp10423723ybi; Wed, 24 Jul 2019 22:58:49 -0700 (PDT) X-Google-Smtp-Source: APXvYqywoNxtJsUAeu4opwd4bXfkinGuQcf8108OHKz+RofqwPLd9xnVjUImzp3RHAhMFrsfWC5V X-Received: by 2002:a17:902:24c:: with SMTP id 70mr88634264plc.2.1564034328974; Wed, 24 Jul 2019 22:58:48 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1564034328; cv=none; d=google.com; s=arc-20160816; b=YgqiEUokHik2HUjag24zUosV8wETkNGGZFALD/t3zGUycIgmuqymkAK6Z/YRql6o1Q e1d3NiU9InT8F2wmMJsFk60OCY9c7WjclcdrSus7EUChcwSYd+8fTWKtSpdI6B+slGw5 xl2a5swyLG2DlkMd2hzFI7jrfV++6E4xAAaZ4KQutP12qv9qljljgfZELPEf8ABHkpYe XgnIUTu6x3qws6WIbf4Xwj8ng+Z7KFdEvytZ9kfpjmwUMTIeX9fQpRAvqT9QnyCtvtru Qu4ixYohWEeACZgBco5wkvvwE5fDedNHBSrLnoSM6ugDmDRpxjdPFmsRqZQp34OYOMUa AhLA== 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=qCb3UBWUlRGol3hcf2qqoHtl7Fv6xrn95KXnM6bDQIw=; b=YmOjz+0ALZhyb7STg1pLxM1dnTlcxrrxyEAxQVrnYWwDOWnnZ9iCjCn6VMu3YjMSYU yTufSylAgjRbzv3nKXVzOt9kkpD+IOI9PbiMnLzXhaxDcoCNW57/5TrVRLsA35oEXZZJ ZzJaQDx4wGJpu0THTqkOJYbB+qlTyykGtEPvEr8BAeyBgjoIl3V7f/gHm/y1CSfY5jfV +ef7K9UG+830IHW8BYhbZfhJP/MTMX3W9Bl95n4jlUFsuoHbCypkBuPzsqbRtDouP4fA TWNTJBbqsSwH457odQsD3tTiQcqB95KxTMT8Te+pkz3xOCG5v8hNYt4FELTh44l1pQFi nLoA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=u8My4vJF; 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 y8si15479215pji.65.2019.07.24.22.58.34; Wed, 24 Jul 2019 22:58:48 -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=u8My4vJF; 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 S2390743AbfGYFk4 (ORCPT + 99 others); Thu, 25 Jul 2019 01:40:56 -0400 Received: from mail.kernel.org ([198.145.29.99]:55582 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2390726AbfGYFky (ORCPT ); Thu, 25 Jul 2019 01:40:54 -0400 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (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 54DEF22BF5; Thu, 25 Jul 2019 05:40:52 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1564033252; bh=khUxIk4oDYzshN3jMswBbEz9tHCV5yR1/rfKNuNPkY4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=u8My4vJFB/ApOUyShYkxyv3pnqHP96oKVbKx1K6KHwehyL8ZKmC3aGWdkTvAmXkaU 13++/uyXrkEcL8iPw8p75Upz0e15PAmS3xPhHAZt7ZW5dyQgWh3M4aO545O7HiFdwr Kh07boRWEi5dQQMAHfomjW34pKKN9Ku5U8wMev1k= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Michael Petlan , Jiri Olsa , Quentin Monnet , Jakub Kicinski , Daniel Borkmann , Sasha Levin Subject: [PATCH 4.19 145/271] tools: bpftool: Fix json dump crash on powerpc Date: Wed, 24 Jul 2019 21:20:14 +0200 Message-Id: <20190724191707.620171659@linuxfoundation.org> X-Mailer: git-send-email 2.22.0 In-Reply-To: <20190724191655.268628197@linuxfoundation.org> References: <20190724191655.268628197@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 [ Upstream commit aa52bcbe0e72fac36b1862db08b9c09c4caefae3 ] Michael reported crash with by bpf program in json mode on powerpc: # bpftool prog -p dump jited id 14 [{ "name": "0xd00000000a9aa760", "insns": [{ "pc": "0x0", "operation": "nop", "operands": [null ] },{ "pc": "0x4", "operation": "nop", "operands": [null ] },{ "pc": "0x8", "operation": "mflr", Segmentation fault (core dumped) The code is assuming char pointers in format, which is not always true at least for powerpc. Fixing this by dumping the whole string into buffer based on its format. Please note that libopcodes code does not check return values from fprintf callback, but as per Jakub suggestion returning -1 on allocation failure so we do the best effort to propagate the error. Fixes: 107f041212c1 ("tools: bpftool: add JSON output for `bpftool prog dump jited *` command") Reported-by: Michael Petlan Signed-off-by: Jiri Olsa Reviewed-by: Quentin Monnet Reviewed-by: Jakub Kicinski Signed-off-by: Daniel Borkmann Signed-off-by: Sasha Levin --- tools/bpf/bpftool/jit_disasm.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/tools/bpf/bpftool/jit_disasm.c b/tools/bpf/bpftool/jit_disasm.c index 87439320ef70..73d7252729fa 100644 --- a/tools/bpf/bpftool/jit_disasm.c +++ b/tools/bpf/bpftool/jit_disasm.c @@ -10,6 +10,8 @@ * Licensed under the GNU General Public License, version 2.0 (GPLv2) */ +#define _GNU_SOURCE +#include #include #include #include @@ -51,11 +53,13 @@ static int fprintf_json(void *out, const char *fmt, ...) char *s; va_start(ap, fmt); + if (vasprintf(&s, fmt, ap) < 0) + return -1; + va_end(ap); + if (!oper_count) { int i; - s = va_arg(ap, char *); - /* Strip trailing spaces */ i = strlen(s) - 1; while (s[i] == ' ') @@ -68,11 +72,10 @@ static int fprintf_json(void *out, const char *fmt, ...) } else if (!strcmp(fmt, ",")) { /* Skip */ } else { - s = va_arg(ap, char *); jsonw_string(json_wtr, s); oper_count++; } - va_end(ap); + free(s); return 0; } -- 2.20.1