From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id E09C7C38A2D for ; Mon, 24 Oct 2022 08:21:09 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229519AbiJXIVI (ORCPT ); Mon, 24 Oct 2022 04:21:08 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35272 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230389AbiJXIUh (ORCPT ); Mon, 24 Oct 2022 04:20:37 -0400 Received: from mail-wm1-x332.google.com (mail-wm1-x332.google.com [IPv6:2a00:1450:4864:20::332]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5C43365016 for ; Mon, 24 Oct 2022 01:18:39 -0700 (PDT) Received: by mail-wm1-x332.google.com with SMTP id l14-20020a05600c1d0e00b003c6ecc94285so6408383wms.1 for ; Mon, 24 Oct 2022 01:18:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; 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=ymsrZRGM/ZJLo4W+q5MQzcab1lYbKfAcdkUqsBlIor0=; b=RAM/Jdhbj7tbCkEVU8+V0q8Tb3FZDr89ylaixBAdGDUVqAx0lk9qeMS0er1gwMI//u MMNiIcoQAaLfGlUU0Z2Wwh8G5zyaYbCMMi32MWguqE6P2T5t3Bc2lUTsp3iAa7unZU3t fqBuLm+UBj3J3vEBJjoswfctDGupg8t3nq+oJN4bdbD0Njg0ytrkNvitifJO2YpExpz2 YUFgrRIcSD0q22pQAkLe/5FHaokhnt6bRx0h+9BkYCUc/r5BpnV3AC394L/e3sXo1p7L gdFWDSIZb3XTIsGJhhkOU4KILQFSTmu3wW4AhJ1KAbyNQ8YWL4RSsR9h0zH0wf00D6cI GndA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:date:from:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=ymsrZRGM/ZJLo4W+q5MQzcab1lYbKfAcdkUqsBlIor0=; b=qvh8Qf0mgyNzv0XK6by2ED4XMfy9P/aStjiq9nIi5ZqnwN/oS/vy9D+czg3wfLgViH X5Qg3dq2Vj2Nsvko8ia101UjGh/w3y45bzeDN5NI3c/HoPniCVU4q4aUu6QPC987hf35 xNhaO3PL6mNlba3aoU9tOhLb2Jwzc4Mj/GGbJAljt50PF+f39fORa8DTpmeo3Yf7sKeL t6GFlYvnV3/1dFjrapEf+3EQblGf0kMEmitZiEI2z30ZeXKdwhgy9Q4DmBTE5qustwaW XcQXp7h44i9GGM74AbSBdzyBGhHGkv9ouPsjZZsOgpFjzkGK1HeMPzRe5k/dUlISfprk bldQ== X-Gm-Message-State: ACrzQf2GQNQMfwVamynNu2qE5F9ttOs6Ivcv+kTOD0FEEHz0jcwBN8QS gKiQycw/O6MwMZCJo0dWQdo= X-Google-Smtp-Source: AMsMyM7mnByysCDVAXPmf+WEfz+mPGn4ORDbdJAslofLaC+1b1fgbhZro7XwA/3iLus0uh3LGmkPtQ== X-Received: by 2002:a05:600c:5024:b0:3c6:e25f:64be with SMTP id n36-20020a05600c502400b003c6e25f64bemr37840615wmr.55.1666599442406; Mon, 24 Oct 2022 01:17:22 -0700 (PDT) Received: from krava (2001-1ae9-1c2-4c00-8b88-53b7-c55c-8535.ip6.tmcz.cz. [2001:1ae9:1c2:4c00:8b88:53b7:c55c:8535]) by smtp.gmail.com with ESMTPSA id k12-20020a5d66cc000000b002366a624bd4sm3751676wrw.28.2022.10.24.01.17.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 24 Oct 2022 01:17:22 -0700 (PDT) From: Jiri Olsa X-Google-Original-From: Jiri Olsa Date: Mon, 24 Oct 2022 10:17:20 +0200 To: Andrii Nakryiko Cc: Alexei Starovoitov , Daniel Borkmann , Andrii Nakryiko , Song Liu , bpf@vger.kernel.org, Martin KaFai Lau , Song Liu , Yonghong Song , John Fastabend , KP Singh , Stanislav Fomichev , Hao Luo , Christoph Hellwig , Masami Hiramatsu , Martynas Pumputis Subject: Re: [PATCHv2 bpf-next 4/8] bpf: Take module reference on kprobe_multi link Message-ID: References: <20221019135621.1480923-1-jolsa@kernel.org> <20221019135621.1480923-5-jolsa@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: Precedence: bulk List-ID: X-Mailing-List: bpf@vger.kernel.org On Fri, Oct 21, 2022 at 03:07:36PM -0700, Andrii Nakryiko wrote: > On Wed, Oct 19, 2022 at 6:57 AM Jiri Olsa wrote: > > > > Currently we allow to create kprobe multi link on function from kernel > > module, but we don't take the module reference to ensure it's not > > unloaded while we are tracing it. > > > > The multi kprobe link is based on fprobe/ftrace layer which takes > > different approach and releases ftrace hooks when module is unloaded > > even if there's tracer registered on top of it. > > > > Adding code that gathers all the related modules for the link and takes > > their references before it's attached. All kernel module references are > > released after link is unregistered. > > > > Note that we do it the same way already for trampoline probes > > (but for single address). > > > > Acked-by: Song Liu > > Signed-off-by: Jiri Olsa > > --- > > kernel/trace/bpf_trace.c | 92 ++++++++++++++++++++++++++++++++++++++++ > > 1 file changed, 92 insertions(+) > > > > diff --git a/kernel/trace/bpf_trace.c b/kernel/trace/bpf_trace.c > > index 17ae9e8336db..9a4a2388dff2 100644 > > --- a/kernel/trace/bpf_trace.c > > +++ b/kernel/trace/bpf_trace.c > > @@ -2452,6 +2452,8 @@ struct bpf_kprobe_multi_link { > > unsigned long *addrs; > > u64 *cookies; > > u32 cnt; > > + struct module **mods; > > + u32 mods_cnt; > > oh, and while we are at it, swap the order so two u32s are tightly packed? will change thanks, jirka > > > }; > > > > struct bpf_kprobe_multi_run_ctx { > > @@ -2507,6 +2509,14 @@ static int copy_user_syms(struct user_syms *us, unsigned long __user *usyms, u32 > > return err; > > } > > [...]