Received: by 2002:a05:7412:8d10:b0:f3:1519:9f41 with SMTP id bj16csp2598409rdb; Fri, 8 Dec 2023 12:58:24 -0800 (PST) X-Google-Smtp-Source: AGHT+IEqOcQUeA9scEob8qpAK9WHgVCMUhofbBgtL7YQ12IjbrZEYcUa4hLvdO0wxyqWNtXVXpYE X-Received: by 2002:a05:6a20:1605:b0:18f:97c:9265 with SMTP id l5-20020a056a20160500b0018f097c9265mr751486pzj.74.1702069104419; Fri, 08 Dec 2023 12:58:24 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1702069104; cv=none; d=google.com; s=arc-20160816; b=Ybq+n1a2t/pEuvfzokIvv3ehxVMYl6v2cF1R2xve2qM2o8gMOxFVjOd8phC42sUl2J yH2+n5J+86JI7e2TqoWLx5Gk+XNNAfgGz0uliCr335ytiju5c0Dwpx8pcrWhQgu+3a1D oP0nB687v7S3Vl/Ir0EdTiGtJvqZMzfG7s1mztCbZ8mKiiumpp/OiRejyKkQGPPmcnVp eUEINvgYBVvukCBnvavkUTdIZdYO2BYfcStWzCeksipUy4NrkdB6xZTlj9Ujeb5fiTS4 80S3D5mWeUXc8xoj9iITgaO60nrEfUUpsMnc65vP6UY2ReZY+nNpyENVR6udgwZqSqmG WC+Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:cc:to:subject :message-id:date:from:in-reply-to:references:mime-version :dkim-signature; bh=jPbPGj/N+kFsGtRBn7sHjIbGBUsdMj/nlx3HBVB+JYE=; fh=fQgCWRvTCP/t++nK1ImfffmCDgAeoMpK4D1rM2RjSwU=; b=Cpe4JujAsFuxXwQiXiCQjn3WTdEIzbDz1xlN8mKglIfq+uMbJZcPM2op4WK4qDWuDv 95bi2Awt0HbnBiHRjwhch6xFbGzRvtHtMPufLQZgFnHbYM+lXCc3B2DgMgoojslliqFe 6cEVVzHexDEMi/0X3ZSmzRxcRjbL1ruPb120ce36JTmavWlqxf/OANzj6URgSg15cyy6 kH09dPMPehtz2HPQRbNn41vWM/cfRC9ADaNKJrrIPOSfeoZ4ZGfzse71IIt1ASz6HJ7X CWWJL1878BNP+/5yL65eA/90FwBY0nqDwJpcMkvgBRlSitx453tw5XQFmOFO2ogPK6rg 40ww== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=G2bPEZZY; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.31 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from morse.vger.email (morse.vger.email. [23.128.96.31]) by mx.google.com with ESMTPS id z8-20020aa78888000000b006ceb278c885si2083187pfe.265.2023.12.08.12.58.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 08 Dec 2023 12:58:24 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.31 as permitted sender) client-ip=23.128.96.31; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=G2bPEZZY; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.31 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by morse.vger.email (Postfix) with ESMTP id DAF7E803B3BC; Fri, 8 Dec 2023 12:58:21 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at morse.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234262AbjLHU6J (ORCPT + 99 others); Fri, 8 Dec 2023 15:58:09 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39576 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230309AbjLHU6I (ORCPT ); Fri, 8 Dec 2023 15:58:08 -0500 Received: from mail-wm1-x32d.google.com (mail-wm1-x32d.google.com [IPv6:2a00:1450:4864:20::32d]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 80E851720; Fri, 8 Dec 2023 12:58:14 -0800 (PST) Received: by mail-wm1-x32d.google.com with SMTP id 5b1f17b1804b1-40c317723a8so14801395e9.3; Fri, 08 Dec 2023 12:58:14 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1702069093; x=1702673893; darn=vger.kernel.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=jPbPGj/N+kFsGtRBn7sHjIbGBUsdMj/nlx3HBVB+JYE=; b=G2bPEZZYSb2B5Lgnfk/xinK7luuV5ZwdA1w3m5wHamNXH8qJjF+Z1tM9OTX62/HnOE OhV8zvE56h0DgRyx+VDqnobABGyRfCwYI5bQaCrCcVvTydUbvZHZlNWwOoDEeo0S6XMJ WpKPxdPDoitky7AgxAH5ogKWjpbBgV7sx7paOModJ4beN2iXcrA3zzSN/MFQFnydjWpT ANWz/022lm6+6EVc9JyMwTFRHw/+rlnuE9sFPbRvEhHg6a2sgh3KA83eOnlUan8qr4fD egHzRbSF6k0V3veNl7t0Fxm5lhk/OKwTpHIYwts6XaninN+0oI71FYKK3eY6uHjoV8fe INuw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1702069093; x=1702673893; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=jPbPGj/N+kFsGtRBn7sHjIbGBUsdMj/nlx3HBVB+JYE=; b=AvNZLiFpSt0Ht7fXUVHyJCixbhks+NWEq1RlfzmivUqCr6SKBAaD9SG3vrMa9D20pw ciG/N3DUdILP88kw8Cyfky8RzXvahRLECChjJIufXjBHA5MG6mJulTVkvYNQ70Z6ciPr E87/q6K5fTF/3Ak2oxU/HLYMdtBc3YD205JGokSelfRebozgF0xtptq8uFLKnagLCV6t yJxIG8+SXahF02lZvhPqbs9O0Vbn8thTKovdk7ckBTHyQ5LCf9yr25dR/4xvy8OzW4Ax vTxRkdOgb0muAlagBroFywnSysvOBWTRJny1jBkOISx2a4IoF6//OrFwq6q60fG6dB9Y d7gA== X-Gm-Message-State: AOJu0YxlCU5TPiSwiw65RSIdjuQ37fpxLkvWHMhRfX/EhcQGfFRtSpEg 1owx+hvaMnvpKkoxKEh/cs4W76C4+TEovppWB5A= X-Received: by 2002:a05:600c:2947:b0:40c:2954:5ad7 with SMTP id n7-20020a05600c294700b0040c29545ad7mr288834wmd.120.1702069092800; Fri, 08 Dec 2023 12:58:12 -0800 (PST) MIME-Version: 1.0 References: <20231206183713.GA35897@noisy.programming.kicks-ass.net> <20231207093105.GA28727@noisy.programming.kicks-ass.net> <20231208102940.GB28727@noisy.programming.kicks-ass.net> <20231208134041.GD28727@noisy.programming.kicks-ass.net> <20231208172152.GD36716@noisy.programming.kicks-ass.net> <20231208203535.GG36716@noisy.programming.kicks-ass.net> <20231208205241.GK28727@noisy.programming.kicks-ass.net> In-Reply-To: <20231208205241.GK28727@noisy.programming.kicks-ass.net> From: Alexei Starovoitov Date: Fri, 8 Dec 2023 12:58:01 -0800 Message-ID: Subject: Re: [PATCH v2 2/2] x86/cfi,bpf: Fix BPF JIT call To: Peter Zijlstra Cc: Jiri Olsa , Song Liu , Song Liu , Paul Walmsley , Palmer Dabbelt , Albert Ou , Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , X86 ML , "H. Peter Anvin" , "David S. Miller" , David Ahern , Alexei Starovoitov , Daniel Borkmann , Andrii Nakryiko , Martin KaFai Lau , Yonghong Song , John Fastabend , KP Singh , Stanislav Fomichev , Hao Luo , Arnd Bergmann , Sami Tolvanen , Kees Cook , Nathan Chancellor , Nick Desaulniers , linux-riscv , LKML , Network Development , bpf , linux-arch , clang-built-linux , Josh Poimboeuf , Joao Moreira , Mark Rutland Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Spam-Status: No, score=-0.6 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE, SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on morse.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (morse.vger.email [0.0.0.0]); Fri, 08 Dec 2023 12:58:22 -0800 (PST) On Fri, Dec 8, 2023 at 12:52=E2=80=AFPM Peter Zijlstra wrote: > > On Fri, Dec 08, 2023 at 12:41:03PM -0800, Alexei Starovoitov wrote: > > On Fri, Dec 8, 2023 at 12:35=E2=80=AFPM Peter Zijlstra wrote: > > > > -__bpf_kfunc void bpf_task_release(struct task_struct *p) > > > +__bpf_kfunc void bpf_task_release(void *p) > > > > Yeah. That won't work. We need a wrapper. > > Since bpf prog is also calling it directly. > > In progs/task_kfunc_common.h > > void bpf_task_release(struct task_struct *p) __ksym; > > > > than later both libbpf and the verifier check that > > what bpf prog is calling actually matches the proto > > of what is in the kernel. > > Effectively we're doing strong prototype check at load time. > > I'm still somewhat confused on how this works, where does BPF get the > address of the function from? and what should I call the wrapper? It starts with register_btf_id_dtor_kfuncs() that takes a set of btf_ids: {btf_id_of_type, btf_id_of_dtor_function}, ... Then based on btf_id_of_dtor_function we find its type proto, name, do chec= ks, and eventually: addr =3D kallsyms_lookup_name(dtor_func_name); field->kptr.dtor =3D (void *)addr; bpf_task_release(struct task_struct *p) would need to stay as-is, but we can have a wrapper void bpf_task_release_dtor(void *p) { bpf_task_release(p); } And adjust the above lookup with extra "_dtor" suffix. > > btw instead of EXPORT_SYMBOL_GPL(bpf_task_release) > > can __ADDRESSABLE be used ? > > Since it's not an export symbol. > > No __ADDRESSABLE() is expressly ignored, but we have IBT_NOSEAL() that > should do it. I'll rename the thing and lift it out of x86 to avoid > breaking all other arch builds. Makes sense.