Received: by 2002:ac0:950c:0:0:0:0:0 with SMTP id f12csp2298490imc; Tue, 12 Mar 2019 10:52:41 -0700 (PDT) X-Google-Smtp-Source: APXvYqyjPO6ADpuu2LGtI9sn0K7KdyF3zpKbcY/aGzx/aXuLrtzmE4ZReDsDoub3F2h7SgMHiQRr X-Received: by 2002:aa7:9259:: with SMTP id 25mr39354579pfp.221.1552413161699; Tue, 12 Mar 2019 10:52:41 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1552413161; cv=none; d=google.com; s=arc-20160816; b=sNsV5olxe/KVer6EkRZeaAENJvA22fU4p96qrPBlp+g1C73Y/zf86PYqyNuLwm5V3u 0X9RFDx6cvrt245bQAyR1tW0dJzTWVmDM3lTntC+zboJAl0bUKeui60fTgDvqOjlXi/a MmcCixD5wIi8WiWKv9E+0TtwcWlkHm5b+HbzHpuF1PvGsD3DRsADiKMGNFzBaW1ItzKw 648yRWnbO/2MfkbD7jRlv6DtHzaWISZ4/MxjxxQE9i2Ab3bIn4rFVupiyq4xu3XSqWhE eMlOjjU0jbPxxVhNUPTpvi1t0JEkwSWtq5fKuK8wrHmWToO8MyQs5QwU8Cf1xdB0U4GZ xYvw== 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=X4hiTsxcVFjTUZRaV+ZQEeynsn4U+vQ6l0f1KpnVjHc=; b=sT4RIX/JHkN0vyyBu9uULalMjstFRibB7mIj9pFqunSM7qyqNmR5l98huu3V7vkfMR r9KWxURwg5sBPMP93rUpxbVmC8DWxIn1XT5FZ2mYBAr8V2mhpuQ10WmBcJuTOXdvDkqN 9Sx+r8TyaP0e2CXTdjCzXLM7vsfjatSOO7viDxB3s2IHRT2fQIXeRv7w7vV1IOBHiCtJ yXrLaR1nkJKqqAOIIqoyIjHiI26v4rm8yyfl9A+2t67mxH6pqinyhCOliVqDoBU5Spt4 WO4TSn+M8GKmg2Y+3Ur3m+LG5ok/fcwYVORmjNhiPbX2aVIFOxZHEbrbevb9fC6rA690 bupA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=lf0DVKoz; 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 l10si8534171pfi.230.2019.03.12.10.52.25; Tue, 12 Mar 2019 10:52:41 -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=lf0DVKoz; 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 S1729078AbfCLRve (ORCPT + 99 others); Tue, 12 Mar 2019 13:51:34 -0400 Received: from mail.kernel.org ([198.145.29.99]:53414 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728399AbfCLROd (ORCPT ); Tue, 12 Mar 2019 13:14:33 -0400 Received: from localhost (unknown [104.133.8.98]) (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 6E75E21741; Tue, 12 Mar 2019 17:14:32 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1552410872; bh=fCpb523PH5ze2vmTXgxOeONnOMTgzT1g5WAb2NGe/3w=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=lf0DVKoz5sQ+J8T3u8T6KFyGXPBAES90sevn3sJ9CcGZVqvv6cXsc9urZ4QZpwNar /vDcq9pNJtSLCSS9+5Nu6rpP5frgFTBZvE6ZUyKVt4kJYNEkpYG1t9JFJy5jezdjEh ihaHaoYljqVxIJZoLKc6WPRy7gMnwpbGzlYO59Nw= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Lance Digby , Jiri Olsa , Quentin Monnet , Jakub Kicinski , Daniel Borkmann , Sasha Levin Subject: [PATCH 4.19 074/149] bpftool: Fix prog dump by tag Date: Tue, 12 Mar 2019 10:08:12 -0700 Message-Id: <20190312170355.818860573@linuxfoundation.org> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190312170349.421581206@linuxfoundation.org> References: <20190312170349.421581206@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review X-Patchwork-Hint: ignore 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 4.19-stable review patch. If anyone has any objections, please let me know. ------------------ [ Upstream commit 752bcf80f5549c9901b2e8bc77b2138de55b1026 ] Lance reported an issue with bpftool not being able to dump program if there are more programs loaded and you want to dump any but the first program, like: # bpftool prog 28: kprobe name trace_req_start tag 1dfc28ba8b3dd597 gpl loaded_at 2019-01-18T17:02:40+1100 uid 0 xlated 112B jited 109B memlock 4096B map_ids 13 29: kprobe name trace_req_compl tag 5b6a5ecc6030a683 gpl loaded_at 2019-01-18T17:02:40+1100 uid 0 xlated 928B jited 575B memlock 4096B map_ids 13,14 # bpftool prog dum jited tag 1dfc28ba8b3dd597 0: push %rbp 1: mov %rsp,%rbp ... # bpftool prog dum jited tag 5b6a5ecc6030a683 Error: can't get prog info (29): Bad address The problem is in the prog_fd_by_tag function not cleaning the struct bpf_prog_info before another request, so the previous program length is still in there and kernel assumes it needs to dump the program, which fails because there's no user pointer set. Moving the struct bpf_prog_info declaration into the loop, so it gets cleaned before each query. Fixes: 71bb428fe2c1 ("tools: bpf: add bpftool") Reported-by: Lance Digby Signed-off-by: Jiri Olsa Reviewed-by: Quentin Monnet Acked-by: Jakub Kicinski Signed-off-by: Daniel Borkmann Signed-off-by: Sasha Levin --- tools/bpf/bpftool/prog.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tools/bpf/bpftool/prog.c b/tools/bpf/bpftool/prog.c index 0de024a6cc2b..bbba0d61570f 100644 --- a/tools/bpf/bpftool/prog.c +++ b/tools/bpf/bpftool/prog.c @@ -109,13 +109,14 @@ static void print_boot_time(__u64 nsecs, char *buf, unsigned int size) static int prog_fd_by_tag(unsigned char *tag) { - struct bpf_prog_info info = {}; - __u32 len = sizeof(info); unsigned int id = 0; int err; int fd; while (true) { + struct bpf_prog_info info = {}; + __u32 len = sizeof(info); + err = bpf_prog_get_next_id(id, &id); if (err) { p_err("%s", strerror(errno)); -- 2.19.1