From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wm1-f48.google.com (mail-wm1-f48.google.com [209.85.128.48]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9016B1547C0 for ; Mon, 30 Mar 2026 14:52:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.48 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774882373; cv=none; b=JWc7FtxvE0M+/SW5pmDV+Ucny46Lpmoj7TcjqN8hhMx0lInFcPHaXMKbly2KCys+K1b5k+G0P3HYEahL4A7VIjvGHhSUJMqZZhTkZj2kJuCJlcfd6GpfN0u0ZKl8BEdXI7BJMfp78WrP1f11q42cTmJNqjYRk7NP2yR/nmtZcJE= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774882373; c=relaxed/simple; bh=MEl0s8Q0in108sE0Z3YfPp8CXOtINBYAh9+o/64iYUA=; h=From:Date:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=JwHmj1xBnTTzpdZOd1x+fhkpNdSOh4Ub7YASihwRLj8IUOovmwhMP90NwbP8z5SD85M3cS+BWh6shvd4HKTazMiBkF8i55GNZRL0GSQ9dcvTxwtfn+cd0cqb6MF6sut8tKv4ia+wtwZjInW+hCrlCFVZxHDgTpV0br58YPMDdEY= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=sWDqpmfv; arc=none smtp.client-ip=209.85.128.48 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="sWDqpmfv" Received: by mail-wm1-f48.google.com with SMTP id 5b1f17b1804b1-4852a9c6309so38820015e9.0 for ; Mon, 30 Mar 2026 07:52:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1774882371; x=1775487171; darn=vger.kernel.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:date:from:from:to:cc:subject:date:message-id:reply-to; bh=Penii6oSJ1CSfljsWTX2ByzVu4f6h5M+tq1akpJN/dY=; b=sWDqpmfv82IKdtez6B2CczUTfE+wb97Ug/qXBFdtNoVv4cMCdEtGIbjfSGSrJ2n1dW zspAUY1V4WsvzVQt16P7gwTdGDLK7lphN0tfz8o86/b89SR31HuwOSA4IOz+Y+R1u2xn 03B8EOQeR6Km2DvRR9g4aIQconhEScpUVOYFN9fiYhaSQ1E8E/XQMcHH+btyBYN55FAe MkkjKx7ycsLsiSnAdTDb0IbQd7mZmY6+/tiLJuihQOVckvwfXIzTdBYQ5h/YW3ncpOdW oeZoSjG9LXEjr9UWJSrxvmNJ5U7b2GhRhecSRZuHGhgpmpeXdOEIVWws0Rg80ybNRxNU wPMw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774882371; x=1775487171; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:date:from:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Penii6oSJ1CSfljsWTX2ByzVu4f6h5M+tq1akpJN/dY=; b=MKfwdMx+U+Mc1/xCsjCrqIddp6JHEdm9oOuITkr4/ULPtILZ00S8cVEnVZCq0mDkZV h/xtEafkKZPZeWBi5kNkQfQbPpt9jfolVpdhB08D6H1SYBJvqqRO6iiwKNfykFM+w1TH Mgql4NTY8O3hOr36yQXX6ZPh2WmVk9oEvUahC2Uj8EtNAvEozUc87yzXzi6uYleW9xrM gFGGM1jQPDldBoFFrtl/i7T42Ht4vnDmvl62PdDOYTTmKJaevPCAGgKgjfXh+34Dk5vI gDAl4/NKCkUnXfnP37yR4/MnlipJ3RjHqZ3i+jAPkXKZ0yFQq30Sbje8acnkzy5J2186 zaWw== X-Forwarded-Encrypted: i=1; AJvYcCUmWPShJpR5DrT5xK1CypC+QuW3rcuTn/qJvhaBGU/YBQ0PC0aIqkLasJFkrfyWXb9TTlMbybLjqEI3sBU=@vger.kernel.org X-Gm-Message-State: AOJu0YyFsBR07j7/l83M6qjzz4MI801JD+Di7d1teJQ+SkvRkSAZsCVm bUX/r4DNpWgY2wHWxKYETt/4RqVNSLCXKXrJXVMlqsNt96nZB0bGBHMV X-Gm-Gg: ATEYQzyBZPyI+54mgeaktcwXyA+jgur2FBtfvuPOWD0zXMGkCspwJX7PhZxvDkCavOf A3yaCjv2eAmu70qUnu7zZIol+8jZXvMw/jOSz/hhqIEBguZUJGs27v9ErE6RtMTtNL6N7fmOUFI BtB2azNElOfXUv83n+u8rDpm3eeD7mAVwNJGPg0S0JCsRsuJoMP5qNhN0B3dynsEpo16cZbhoLZ 8sGHil/YEzd4Rz5AKqFBlWca7gRn/7/LT1Y1Bqua/VDnG0i0W8g7nDofpgVoWsdB2X0qOwfXnT7 RtcNvGdG7Oh+U6rvZepmAooM+QaWyOcnqXRK1i5AWaSg7B+XKM/o3+1PqoO28kPPhmjkDk8+/PW Qvw3OJxTnTAQZir4NNgbWTAhQHB/szQK3T4sduM2GcHTsUbIacd/PQ3Q/bZvCanD0E9wo61fJc+ ZUHOyfxoAP/DDB8/UDAw/P6KZ6s/Dcml2s0IDvcXrg50kaZR6NENuYVPCBrg== X-Received: by 2002:a05:600c:16ca:b0:485:3ae8:2231 with SMTP id 5b1f17b1804b1-48731faed9cmr86124445e9.30.1774882370548; Mon, 30 Mar 2026 07:52:50 -0700 (PDT) Received: from krava (cust-west-par-46-193-1-135.cust.wifirst.net. [46.193.1.135]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-48737a73062sm42467515e9.34.2026.03.30.07.52.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 30 Mar 2026 07:52:50 -0700 (PDT) From: Jiri Olsa X-Google-Original-From: Jiri Olsa Date: Mon, 30 Mar 2026 16:52:46 +0200 To: Varun R Mallya Cc: andrii@kernel.org, alan.maguire@oracle.com, yonghong.song@linux.dev, song@kernel.org, bpf@vger.kernel.org, ast@kernel.org, daniel@iogearbox.net, memxor@gmail.com, eddyz87@gmail.com, martin.lau@linux.dev, menglong8.dong@gmail.com, puranjay@kernel.org, bjorn@kernel.org, leon.hwang@linux.dev, linux-kernel@vger.kernel.org Subject: Re: [RFC PATCH bpf-next v2 2/3] libbpf: Add FEAT_KPROBE_MULTI_LINK feature probe. Message-ID: References: <20260330110019.549079-1-varunrmallya@gmail.com> <20260330110019.549079-3-varunrmallya@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20260330110019.549079-3-varunrmallya@gmail.com> On Mon, Mar 30, 2026 at 04:30:18PM +0530, Varun R Mallya wrote: > Add FEAT_KPROBE_MULTI_LINK, similar to UPROBE_MULTI_LINK > by loading and creating a link for a small BPF program with > BPF_TRACE_KPROBE_MULTI as the expected attach type, and > then checking the success of the operation. > > Signed-off-by: Varun R Mallya > --- > tools/lib/bpf/features.c | 37 +++++++++++++++++++++++++++++++++ > tools/lib/bpf/libbpf_internal.h | 2 ++ > 2 files changed, 39 insertions(+) > > diff --git a/tools/lib/bpf/features.c b/tools/lib/bpf/features.c > index adcad221c601..13227c9ea69d 100644 > --- a/tools/lib/bpf/features.c > +++ b/tools/lib/bpf/features.c > @@ -424,6 +424,40 @@ static int probe_uprobe_multi_link(int token_fd) > return link_fd < 0 && err == -EINVAL; > } > > +static int probe_kprobe_multi_link(int token_fd) > +{ > + LIBBPF_OPTS(bpf_prog_load_opts, load_opts, > + .expected_attach_type = BPF_TRACE_KPROBE_MULTI, > + .token_fd = token_fd, > + .prog_flags = token_fd ? BPF_F_TOKEN_FD : 0, > + ); > + LIBBPF_OPTS(bpf_link_create_opts, link_opts); > + struct bpf_insn insns[] = { > + BPF_MOV64_IMM(BPF_REG_0, 0), > + BPF_EXIT_INSN(), > + }; > + int prog_fd, link_fd, err; > + const char *sym = "bpf_map_lookup_elem"; /* stable, always present */ > + > + prog_fd = bpf_prog_load(BPF_PROG_TYPE_KPROBE, NULL, "GPL", > + insns, ARRAY_SIZE(insns), &load_opts); > + if (prog_fd < 0) > + return -errno; > + > + /* attaching to a valid symbol should succeed */ > + link_opts.kprobe_multi.syms = &sym; > + link_opts.kprobe_multi.cnt = 1; maybe we could set cnt > MAX_KPROBE_MULTI_CNT and check if the fail is E2BIG ? this could save some cycles, but haven't tried that jirka > + link_fd = bpf_link_create(prog_fd, -1, BPF_TRACE_KPROBE_MULTI, &link_opts); > + err = -errno; > + if (link_fd >= 0) > + close(link_fd); > + close(prog_fd); > + /* if kprobe_multi is supported, link creation either succeeds or > + * fails with something other than -EINVAL due to permissions, > + */ > + return link_fd >= 0 || (err != -EINVAL); > +} > + SNIP