Received: by 2002:a05:6358:1087:b0:cb:c9d3:cd90 with SMTP id j7csp905157rwi; Wed, 19 Oct 2022 04:34:18 -0700 (PDT) X-Google-Smtp-Source: AMsMyM56HNQuLIUHvWd0cX78tUevcqVZlsFL1peaq7WIkxiWY2I+umpOKdpCKrkkDHnyPMbBI9lE X-Received: by 2002:a17:907:808:b0:730:54cc:b597 with SMTP id wv8-20020a170907080800b0073054ccb597mr6296672ejb.434.1666179258197; Wed, 19 Oct 2022 04:34:18 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1666179258; cv=none; d=google.com; s=arc-20160816; b=E2GZpycXW5+JYhNyiFbHwvqiDYCxhDRuouqFscm3vv+4TdSvOZZVLMn2BUNs8t5eNT JDXsNpPOr8dLe0LHHOWC90FE64H8gs5gjrRkb/KQWHEQLYSP+t1UveIV7oB3K2eKJljS wcqd9ynhDmM/tHsTUNADfbqUDSXZZefqGyypU/ruueKe8iEzm19eBG9k2PMBBg7J6s1R MH5Kt7kmbVoVlD2Y4s2/PErF/bdsJGnoF1PYXct7/UlvvhGVcVhqqtvQirXXfq4wUWoI bol2QGbZS5mPdkVLd+fu1sPMym1yM1ZD7T7zSHhVZVXOLjDUZ24A4W1mGIjfRc87yyk6 HIEg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:content-disposition:mime-version :references:message-id:subject:cc:to:date:from:dkim-signature; bh=uRkokOnUGTB7YuuZ3HxvCL2EU7JYl74de/Mbu83cbuA=; b=d/fCf3ufjQaDLO+j/8H21bt0KaeOLB797JIidnGSsTVAfLBw3d+IqJ7Icf5XzS2cuX o3CAkun1TONT/5H6iC5HcxX2hMb6sHk8g3poDpygk3iqElMUOsMLI8t9ekfOJ4DZN+Qd jVxjjgHbxz7CzzUCHCAxps3qIsK5NnOWv6L9T1R3pxHOzFXq9GtyNMYEnKBBIWPsabGl 3TVDJkgOpG6somNSVdeQkxVTY9HyRAgbi2sgjHeCHdEqnQwfCjCyZrDG2Hh/a7p6IEx4 JHSOvmdQSMSR0RW8KhdiWcPRQyg0q9LTR+xAf70Ae9Ap1dWFSoY4221+NFVtmwnbD8Yq scRA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b=RDX8T5T0; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 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 out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id fk24-20020a056402399800b0045cafc51fbfsi14063646edb.525.2022.10.19.04.33.52; Wed, 19 Oct 2022 04:34:18 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b=RDX8T5T0; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234344AbiJSJ47 (ORCPT + 99 others); Wed, 19 Oct 2022 05:56:59 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39516 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234394AbiJSJ43 (ORCPT ); Wed, 19 Oct 2022 05:56:29 -0400 Received: from mail-wr1-x42e.google.com (mail-wr1-x42e.google.com [IPv6:2a00:1450:4864:20::42e]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8805810A7FE; Wed, 19 Oct 2022 02:32:33 -0700 (PDT) Received: by mail-wr1-x42e.google.com with SMTP id n12so27936920wrp.10; Wed, 19 Oct 2022 02:32:32 -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=uRkokOnUGTB7YuuZ3HxvCL2EU7JYl74de/Mbu83cbuA=; b=RDX8T5T0XtX3o+g5YTuJgc/k6wZqjY06wjnbWG8cfKToMu2DIl3ujkjBGAufkRIMRH Hfsoocd9Ll60B8Lozu3PEVlzVVKSsIJ8WmLi228cYopOrpF9rfCJH9O/LuWrGuars7d9 m4moV7UzxQ7GNjJZfvn7Et6EBW4MKtB2aQ+PaNos7BQR53D5MswBZj6iSK9AZc5FRBHK HKn+7JAlAfJG3mjgCV8Avjhrf0hTOhoU6WUkCQSBE1YfCYMm707DetMhBYvl1XRkPQ+B PXQRdYMRWb387QTMTHYtPFhFtvWobbE8wJqE7ZPkDMPZTFR7dWAF2CQZIgwf7YZvYtWx 6a+w== 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=uRkokOnUGTB7YuuZ3HxvCL2EU7JYl74de/Mbu83cbuA=; b=45832iBD20GI5ionXDhlbjniSDA8NQplSI6BFnj+Tr1FW6yaINnub+IpILTgSXtOuL SX3r0mCmOSa/I6YsWH24HW6xAb6q/UiJXzuMMudEthzUEhv9BmF5Oda3BPkIsMZCvGxK XXaW5FBj0VXf42VY3DVkPMRZngtkk+2ts/o5P+zGUe63Mhv3R2ZGPqPiFzYVxeBfTrmA 5bx3PRGKGzXjbUL6aBC+pSRU0zgPLj1r/11bN4iAxYKhjHYEBdTBFfJd0+fBGw06Tfbm dNOPpnCHkd659xos+B2WVQ9mANcza6CqCZu3veujexeLvxrDfeZZ7n7V78KCqUHU0qmL BjpQ== X-Gm-Message-State: ACrzQf2gWYsdTUATVeLE2JD8OdgRGoYJpY2CRPtfdsQjWgApBvwe1s4x 6zKOYOfUtcD2xHe96T9OD54= X-Received: by 2002:a5d:54ce:0:b0:22e:2ecf:7c2a with SMTP id x14-20020a5d54ce000000b0022e2ecf7c2amr4371465wrv.181.1666171814580; Wed, 19 Oct 2022 02:30:14 -0700 (PDT) Received: from krava ([83.240.63.167]) by smtp.gmail.com with ESMTPSA id u7-20020a7bc047000000b003b5054c6f87sm15647813wmc.21.2022.10.19.02.30.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 19 Oct 2022 02:30:13 -0700 (PDT) From: Jiri Olsa X-Google-Original-From: Jiri Olsa Date: Wed, 19 Oct 2022 11:30:11 +0200 To: sdf@google.com Cc: Alexei Starovoitov , Daniel Borkmann , Andrii Nakryiko , Peter Zijlstra , Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , Andy Lutomirski , Akihiro HARAI , bpf@vger.kernel.org, linux-kernel@vger.kernel.org, Martin KaFai Lau , Song Liu , Yonghong Song , John Fastabend , KP Singh , Hao Luo Subject: Re: [PATCH] x86: Include asm/ptrace.h in syscall_wrapper header Message-ID: References: <20221018122708.823792-1-jolsa@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM, RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Oct 18, 2022 at 11:23:21AM -0700, sdf@google.com wrote: > On 10/18, Jiri Olsa wrote: > > From: Jiri Olsa > > > With just the forward declaration of the 'struct pt_regs' in > > syscall_wrapper.h, the syscall stub functions: > > > __[x64|ia32]_sys_*(struct pt_regs *regs) > > > will have different definition of 'regs' argument in BTF data > > based on which object file they are defined in. > > > If the syscall's object includes 'struct pt_regs' definition, > > the BTF argument data will point to 'struct pt_regs' record, > > like: > > > [226] STRUCT 'pt_regs' size=168 vlen=21 > > 'r15' type_id=1 bits_offset=0 > > 'r14' type_id=1 bits_offset=64 > > 'r13' type_id=1 bits_offset=128 > > ... > > > If not, it will point to fwd declaration record: > > > [15439] FWD 'pt_regs' fwd_kind=struct > > > and make bpf tracing program hooking on those functions unable > > to access fields from 'struct pt_regs'. > > Is the core issue here is that we can't / don't resolve FWD declarations > at load time (or dedup time)? I'm assuming 'struct pt_regs' is still > exposed somewhere in BTF via some other obj file, it's just those > syscall definitions that have FWD decl? yes, BTF is generated from dwarf debug info, so it's object based, and in some objects the regs argument will point to full struct definition and in some just to forward declaration > > Applying this patch seems fine for now, but also seems fragile. Should > we instead/also teach verifier/dedup/whatever to resolve those FWD > declarations? I'm not sure how hard it'd be to connect forward declarations to definitions.. it'd need to be probably in dedup or verifier as you suggest and I think it'd need to be done just based on struct name search, so I expect all sort of unexpected problems ;-) other than to be sure you connect to proper struct Andrii will have probably better idea if and where this is possible jirka > > > Including asm/ptrace.h directly in syscall_wrapper.h to make > > sure all syscalls see 'struct pt_regs' definition and resulted > > BTF for '__*_sys_*(struct pt_regs *regs)' functions point to > > actual struct, not just forward declaration. > > > Reported-by: Akihiro HARAI > > Signed-off-by: Jiri Olsa > > --- > > arch/x86/include/asm/syscall_wrapper.h | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > diff --git a/arch/x86/include/asm/syscall_wrapper.h > > b/arch/x86/include/asm/syscall_wrapper.h > > index 59358d1bf880..fd2669b1cb2d 100644 > > --- a/arch/x86/include/asm/syscall_wrapper.h > > +++ b/arch/x86/include/asm/syscall_wrapper.h > > @@ -6,7 +6,7 @@ > > #ifndef _ASM_X86_SYSCALL_WRAPPER_H > > #define _ASM_X86_SYSCALL_WRAPPER_H > > > -struct pt_regs; > > +#include > > > extern long __x64_sys_ni_syscall(const struct pt_regs *regs); > > extern long __ia32_sys_ni_syscall(const struct pt_regs *regs); > > -- > > 2.37.3 >