Received: by 2002:a05:6a10:9848:0:0:0:0 with SMTP id x8csp736903pxf; Wed, 24 Mar 2021 14:53:29 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyINRetT8LYr+moIhtUUNq1ZtpeSGDjD/IJsZEzjmxDSAQ+B7BQqjf+yIC/zN+as5q2plIE X-Received: by 2002:aa7:dc49:: with SMTP id g9mr5605039edu.60.1616622809472; Wed, 24 Mar 2021 14:53:29 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1616622809; cv=none; d=google.com; s=arc-20160816; b=Muetn4wekmY5s+iyo2M3W0GbD6hlY+XlD13bCclfO9K+/CGfhStts3huPw5hnZ2Bsv spW7XH8YnbC7J2TYjs0Sj41Y6+ebC0yZb3pKp4nW7645Jbp7kOUgfIR8bSiTirR4fhyI b+RvhNfCr7yjkebEwL/FD9+kBJ8g23VO3jftH2gWGzoOnZXgttZ+GcB8SdTgjOSJtHR1 ogNjc671uIx8LuCxP6i2kt5KbSPWTfMTGuEctuKDUoG/5QGDRMQlq5LhmUAELbBkDv/g ifYUM5FfUbrKI31cYuayqTfCLAI2XNCtNO5ARROulPuL9xhupGSloiB940lniciuht3G rpIg== 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 :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=DgtEXfyMpibQZBxsBxLO280xYt78RavkJ5Ge5XcGw9g=; b=BsnhsyHPHlMgiYFS0+Le7Qf1G3DBvJxd0iPdmLQnzYKZs1G1EwsScJXRNZjDbyb0bL rLP7kQRy4CXM0bmkDq3OKYM38kEt0qSezsS3zDogldLu2jIOJGh9idSDiTQ95w6EyJg1 AJbMcfEokLjQzkfnDE5+2PrAOSYTzDKaMXqGn5xIemKEqM9cOVJarZPKJwwORHk1HK2D GvzT9CTfMz5JsDyqVGqFiA65GwzSyhovOXMFD/JnOUVPAQNMIpuy7HUHrjK0lKvv5Mjq RxON3MmWbfWQ2UzQ3rmKU40AjrSnHr59C42X8LQ+tHE4mX7Piuf39vsOUSYYfqedTJqs vB8A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=DscXYx0t; 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=chromium.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id w17si2736728ejk.520.2021.03.24.14.53.06; Wed, 24 Mar 2021 14:53:29 -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=@chromium.org header.s=google header.b=DscXYx0t; 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=chromium.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234894AbhCXCXa (ORCPT + 99 others); Tue, 23 Mar 2021 22:23:30 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33998 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234868AbhCXCXJ (ORCPT ); Tue, 23 Mar 2021 22:23:09 -0400 Received: from mail-wr1-x432.google.com (mail-wr1-x432.google.com [IPv6:2a00:1450:4864:20::432]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8D97CC061763 for ; Tue, 23 Mar 2021 19:23:09 -0700 (PDT) Received: by mail-wr1-x432.google.com with SMTP id v4so22826344wrp.13 for ; Tue, 23 Mar 2021 19:23:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=DgtEXfyMpibQZBxsBxLO280xYt78RavkJ5Ge5XcGw9g=; b=DscXYx0tfZXiOeAHsK/pTwSM+SMtDANBrbjqJPErgjYsQ+sP4l8uLkh9IGZuavw/gd LCS8Rsz5fGmAROBo0/iCVX98MCeHCGxIqDJ21IV3zlWw2+U9omSI9cJN+efFxyeX2mub NCWzKJlkVM20no0pAaK98AeHCQ3O50wc7y1F0= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=DgtEXfyMpibQZBxsBxLO280xYt78RavkJ5Ge5XcGw9g=; b=R1uxPEYIgo221NhqtAnaovrDE9S5dciIUpV84xmzWMgRZi3osLWooDllbfPaMm2XmN pTDbmDHBZUGmZS9WsVrt4F2k4epO/kNQEq1vZxZIoq2ZJAxmoFGo66rHWiqwGjK9twPx BG6GSS9TVu4meR7ECif+WaL1NrhQEbJCir6P1wt9RuKy1xb5NpBvKtxrhFv8FiEtMnhr SYBAxZozVnPzQ/S+aFTbQy40LlFb+VnfMhgrksaIDQva1aS1QwJlPyYkaFv0DqgrhPJM 1EZYBDsOEHoVBcyE8P8HHJcYpGJg4qN2gd90ywj7Lr5gyp4oAcj6e5uvH/DhhMFgkRXd c9ig== X-Gm-Message-State: AOAM530dgPFq6i61hkukdvS5RYyIIF4EssYW3cEQ9t72q+1P6RN950Z6 BWpfpolqAqIxoactPEYb54IMhQ== X-Received: by 2002:adf:e38f:: with SMTP id e15mr785656wrm.321.1616552588336; Tue, 23 Mar 2021 19:23:08 -0700 (PDT) Received: from revest.zrh.corp.google.com ([2a00:79e0:42:204:ccba:9601:929c:dbcb]) by smtp.gmail.com with ESMTPSA id n9sm74219wrx.46.2021.03.23.19.23.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 23 Mar 2021 19:23:07 -0700 (PDT) From: Florent Revest To: bpf@vger.kernel.org Cc: ast@kernel.org, daniel@iogearbox.net, andrii@kernel.org, yhs@fb.com, kpsingh@kernel.org, jackmanb@chromium.org, linux-kernel@vger.kernel.org, Florent Revest Subject: [PATCH bpf-next v2 4/6] libbpf: Initialize the bpf_seq_printf parameters array field by field Date: Wed, 24 Mar 2021 03:22:09 +0100 Message-Id: <20210324022211.1718762-5-revest@chromium.org> X-Mailer: git-send-email 2.31.0.291.g576ba9dcdaf-goog In-Reply-To: <20210324022211.1718762-1-revest@chromium.org> References: <20210324022211.1718762-1-revest@chromium.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org When initializing the __param array with a one liner, if all args are const, the initial array value will be placed in the rodata section but because libbpf does not support relocation in the rodata section, any pointer in this array will stay NULL. Fixes: c09add2fbc5a ("tools/libbpf: Add bpf_iter support") Signed-off-by: Florent Revest --- tools/lib/bpf/bpf_tracing.h | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/tools/lib/bpf/bpf_tracing.h b/tools/lib/bpf/bpf_tracing.h index f9ef37707888..d9a4c3f77ff4 100644 --- a/tools/lib/bpf/bpf_tracing.h +++ b/tools/lib/bpf/bpf_tracing.h @@ -413,6 +413,22 @@ typeof(name(0)) name(struct pt_regs *ctx) \ } \ static __always_inline typeof(name(0)) ____##name(struct pt_regs *ctx, ##args) +#define ___bpf_fill0(arr, p, x) +#define ___bpf_fill1(arr, p, x) arr[p] = x +#define ___bpf_fill2(arr, p, x, args...) arr[p] = x; ___bpf_fill1(arr, p + 1, args) +#define ___bpf_fill3(arr, p, x, args...) arr[p] = x; ___bpf_fill2(arr, p + 1, args) +#define ___bpf_fill4(arr, p, x, args...) arr[p] = x; ___bpf_fill3(arr, p + 1, args) +#define ___bpf_fill5(arr, p, x, args...) arr[p] = x; ___bpf_fill4(arr, p + 1, args) +#define ___bpf_fill6(arr, p, x, args...) arr[p] = x; ___bpf_fill5(arr, p + 1, args) +#define ___bpf_fill7(arr, p, x, args...) arr[p] = x; ___bpf_fill6(arr, p + 1, args) +#define ___bpf_fill8(arr, p, x, args...) arr[p] = x; ___bpf_fill7(arr, p + 1, args) +#define ___bpf_fill9(arr, p, x, args...) arr[p] = x; ___bpf_fill8(arr, p + 1, args) +#define ___bpf_fill10(arr, p, x, args...) arr[p] = x; ___bpf_fill9(arr, p + 1, args) +#define ___bpf_fill11(arr, p, x, args...) arr[p] = x; ___bpf_fill10(arr, p + 1, args) +#define ___bpf_fill12(arr, p, x, args...) arr[p] = x; ___bpf_fill11(arr, p + 1, args) +#define ___bpf_fill(arr, args...) \ + ___bpf_apply(___bpf_fill, ___bpf_narg(args))(arr, 0, args) + /* * BPF_SEQ_PRINTF to wrap bpf_seq_printf to-be-printed values * in a structure. @@ -421,12 +437,14 @@ static __always_inline typeof(name(0)) ____##name(struct pt_regs *ctx, ##args) ({ \ _Pragma("GCC diagnostic push") \ _Pragma("GCC diagnostic ignored \"-Wint-conversion\"") \ + unsigned long long ___param[___bpf_narg(args)]; \ static const char ___fmt[] = fmt; \ - unsigned long long ___param[] = { args }; \ + int __ret; \ + ___bpf_fill(___param, args); \ _Pragma("GCC diagnostic pop") \ - int ___ret = bpf_seq_printf(seq, ___fmt, sizeof(___fmt), \ - ___param, sizeof(___param)); \ - ___ret; \ + __ret = bpf_seq_printf(seq, ___fmt, sizeof(___fmt), \ + ___param, sizeof(___param)); \ + __ret; \ }) #endif -- 2.31.0.291.g576ba9dcdaf-goog