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 kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 717F4C28B30 for ; Thu, 20 Mar 2025 23:09:30 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 14845280002; Thu, 20 Mar 2025 19:09:28 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 0F955280001; Thu, 20 Mar 2025 19:09:28 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id F02D0280002; Thu, 20 Mar 2025 19:09:27 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id D2036280001 for ; Thu, 20 Mar 2025 19:09:27 -0400 (EDT) Received: from smtpin19.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 06576BA56D for ; Thu, 20 Mar 2025 23:09:29 +0000 (UTC) X-FDA: 83243472858.19.A919065 Received: from mail-yb1-f175.google.com (mail-yb1-f175.google.com [209.85.219.175]) by imf10.hostedemail.com (Postfix) with ESMTP id 0B22AC0011 for ; Thu, 20 Mar 2025 23:09:26 +0000 (UTC) Authentication-Results: imf10.hostedemail.com; dkim=pass header.d=rivosinc-com.20230601.gappssmtp.com header.s=20230601 header.b=s0u2SdzH; spf=pass (imf10.hostedemail.com: domain of debug@rivosinc.com designates 209.85.219.175 as permitted sender) smtp.mailfrom=debug@rivosinc.com; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1742512167; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=NsQLaUzZKjouDcBV/YPUh/MkwoWlaLe69i4Or3Hkjms=; b=ShyIawMScSjW0yPSS+9p0mZelpD8MtEoCd5rw20UGhGOucucGyC8B3eVfcnPmxwCSx2vqx 3GPnUap5xI/H4qGjy4Dzw7XGtag0brcM/uZA3uHC78ZWSuUPil08mSnfIgAN2mVfvfZCrw QX5bLJDb9U80X2MBbLPFLJjQoAqnq8o= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1742512167; a=rsa-sha256; cv=none; b=xRQ5EwKkqM0+UZYl/vI8m5K/Jb/hZk9c+BuvsURlPs3zEX1JRnFLfO7xXPCmilV8PY8i9W ldqaeYIO/URWUl2vvajzkG9S5jM6bjSQBCIz4NOHThs1NLL/NjYfFPA+XU86kclEyynrct ziO4bYo09iweJzRibSjIKmMOUg/X464= ARC-Authentication-Results: i=1; imf10.hostedemail.com; dkim=pass header.d=rivosinc-com.20230601.gappssmtp.com header.s=20230601 header.b=s0u2SdzH; spf=pass (imf10.hostedemail.com: domain of debug@rivosinc.com designates 209.85.219.175 as permitted sender) smtp.mailfrom=debug@rivosinc.com; dmarc=none Received: by mail-yb1-f175.google.com with SMTP id 3f1490d57ef6-e637edaa652so1028907276.1 for ; Thu, 20 Mar 2025 16:09:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1742512166; x=1743116966; darn=kvack.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=NsQLaUzZKjouDcBV/YPUh/MkwoWlaLe69i4Or3Hkjms=; b=s0u2SdzHlzjRGespUDsBfkJoKVTBmfjq0pfQeD3DEwSF9UuSRZbsa/XBUEqBCg3Q4f AyZptyzeyh3EI5VipmYOK4bNJNzRGFfslMhsBwtUVaxRGdtK2PycermlerA0g2PJoShB niba62UtY5BGxnIJdA36FStLfP6rS8LLFEG3FZJQ91o0YB8GEHOFtAAxGFGXwtqKayDt WlJR4oJ61MkeaKBcq//gIJNgZhTHqA2z6Vmy0cWWEStcOyeK4mdNRqV664ElPmK5kO6O BwC613Ra3EotbogTZ/89oYaqo/KrRMf9UGNnr85LDmizRSnPWWSxTWvvVVQ98lk5/EKs fARA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1742512166; x=1743116966; 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=NsQLaUzZKjouDcBV/YPUh/MkwoWlaLe69i4Or3Hkjms=; b=PRrvSrE/HltnfBw2kvb+4EDOTwasqPhNy3wxCdKzQZKmTZZtyY9IQOF+WNMrRjgrNt zGEpwjoSPePW0SI38ILI00pYCnGVx3eDtO91y0A/u18AhN6oV/5n2C5iojCvrgb6N2By cDHsesDx6dAUe1zjamTmrjqXshWIBHI1YPZbfIRvagauVdUqNUeJUz3kbwpeQpYrd3Ul UdfOCw90qCnmDiDi8efD1JOEVS4wRIpGIEE6XfXZFVkgJHthSpmeNeDnVfZH02tr4MSM luxtIRVr5bZ+IDo3fbjIKqtVpkuGa6RFAzU0vjuoRmNQ9zDvMruMeuvxhUs5EOBcN+P9 kbfg== X-Forwarded-Encrypted: i=1; AJvYcCU2mwF8YMlvMPFOhkG6C5/IYmoGZWUj5PhUExL1SS7O4ydh/wxpmsf6bs1vC7WbF2zx6RMp5vZS1A==@kvack.org X-Gm-Message-State: AOJu0YyK/AY4Q3jlwCKf5ocwdxxGUi2j1FhAk9TN8CBmwoCNEYl2nqVx TEADDUeeEXt0NO1Rck4nqF5KDS40sDv0vIoUg6rTJPZ/Hx4BwhfxC6biqhIBPsFsRk5BzIHnJNN 2uCEG7Swn7djclOzZX9tmaZEG+VuM9Csn28vbzQ== X-Gm-Gg: ASbGncu9ZgebaLd6yyAanjpSjn+nGB82JYeeplBnA2lQSBZIJNiUrDwICUBWVNO3JnY HIF2GeETs/ZKzPEEcy+fKIfsIDYlp+iF21/5uMYPz+yFMkOO6frTccpzpSYHhHKhX7flfWD1McY ctwkto+mpb5ra5B7NbmWoJo4VO3Wm1sG2XE3MnAA== X-Google-Smtp-Source: AGHT+IFDRrLxIAnQM1sktWzlO7b7dXnBgFLapHyMV4vMjPpWfJaidUEdMv15+RgA77Z60kHjKJe06Yio1uLKOlCq2sA= X-Received: by 2002:a05:690c:9a05:b0:6fb:277f:f022 with SMTP id 00721157ae682-700bac63638mr18849517b3.15.1742512166144; Thu, 20 Mar 2025 16:09:26 -0700 (PDT) MIME-Version: 1.0 References: <20250314-v5_user_cfi_series-v12-0-e51202b53138@rivosinc.com> <20250314-v5_user_cfi_series-v12-19-e51202b53138@rivosinc.com> In-Reply-To: From: Deepak Gupta Date: Thu, 20 Mar 2025 16:09:12 -0700 X-Gm-Features: AQ5f1JreP6HXwpJ5ynf6jYICgHmcVMtUgEM9ETC-KUSuZNcuhzZ0eOngfgfDvqY Message-ID: Subject: Re: [PATCH v12 19/28] riscv/ptrace: riscv cfi status and state via ptrace and in core files To: =?UTF-8?B?UmFkaW0gS3LEjW3DocWZ?= Cc: Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , x86@kernel.org, "H. Peter Anvin" , Andrew Morton , "Liam R. Howlett" , Vlastimil Babka , Lorenzo Stoakes , Paul Walmsley , Palmer Dabbelt , Albert Ou , Conor Dooley , Rob Herring , Krzysztof Kozlowski , Arnd Bergmann , Christian Brauner , Peter Zijlstra , Oleg Nesterov , Eric Biederman , Kees Cook , Jonathan Corbet , Shuah Khan , Jann Horn , Conor Dooley , linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-mm@kvack.org, linux-riscv@lists.infradead.org, devicetree@vger.kernel.org, linux-arch@vger.kernel.org, linux-doc@vger.kernel.org, linux-kselftest@vger.kernel.org, alistair.francis@wdc.com, richard.henderson@linaro.org, jim.shu@sifive.com, andybnac@gmail.com, kito.cheng@sifive.com, charlie@rivosinc.com, atishp@rivosinc.com, evan@rivosinc.com, cleger@rivosinc.com, alexghiti@rivosinc.com, samitolvanen@google.com, broonie@kernel.org, rick.p.edgecombe@intel.com, linux-riscv Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspam-User: X-Rspamd-Server: rspam10 X-Rspamd-Queue-Id: 0B22AC0011 X-Stat-Signature: y9593f73wntsjem6oii5fe74y5f7eb1b X-HE-Tag: 1742512166-87024 X-HE-Meta: U2FsdGVkX18SRa/W/qUc5GfrAkVt125bKFSUY3R+ym8MJLLCeYU0+NDCgm/TrRc5JUNiWdR3dy8QojzkRu4YPScoLV20BQc+6I/Q56R4kss357FGzL9jot9FAqURmq6QG06z5x3iXKYqVtZdKELmfydQ2csMgidBJf5MtFV6sviK+bUP4wIWzBp/s2jp3+qkTLRVa5rljbpuLPgGEyScZXuYnbBqEPFgKsGCADJVb/F19z821ewi9do+754t+Ts3a4P+ZNd8hRVd8Zx7xzmSNLdBvcbI+nC67uw8ozCmTBfdf9FRIaIX03HttNu0XBULK0Ho2cJsU7xzANF5Y9NXpWPqBNZdyCxVtpCDVwbIPTHUu4KWmyDN1yfoMQII1hXS6CsQNwdnL04f1A4tImKQOOUbUlF1NOJgy5dciGkNqIx6Iq6VUOFway5KQyN3hKp3tcZqtDTcWnUfrwWXSxe7lVyTs6zMpOZNv38+t5A9i09ve3UOTNKoezbORpfgR4zxfooFfQl8Z4GlSm4tpqcFiiZOwmCCtM+3Hb7+gi/2NGyeESiiBbJl06+n59ykmf56rqwASIQXahxVeEnPfa11dbFqnd2mwzDcNmHLrp9SgJunMgJV43MFTSHJvP90gRfi3DcsWayqPDnzz546I5tga9R2b4THndhqvO758f1S5WUF+YMARIZhVJAzL6UgQDnzSNXc7D5HOuUeEnuHUt0o3RdPUxseFOwj5Kf9gKPknOKQkB7nj73yAelOPB6O5UW5znF3304urx6heMoRbsNxZMcb31wZx8mVUvKj8FpEMeoijnLS8CQ2b2DkGe8581BBSP2L7NADCXFpzkhklTUtnF12ThyW5+Bxfcv8M7ChTip4MqXyBx5lIgxLVk153bmPTECJT8Lsk0JqcGGkzbO2slOtquevakzrIzrJKwIyU8ui8J0xxzLLLHhisYu8D3X05KORDjlPd4xqKDknKZX 6AdOVp+Q MvqNMMGSLOU05W9ZV4xru08nkCXhm21qpd4WaDJgE7csaenfQWlnA6v7wnfzCKiHk0GMrq7CVYFl+8pVLkIHGsOLqFN4QdyMBc85/wPD6nN+AgzWhVR1OXuEJDGNkdVax4GLb7NzJUSMT5u0IyC+N8fpWPRBru5nIa8dlBiSGVYcUVRtDAAZaPuGjddG5Z4aAkV/VoSHIQHFVgWRpo3g7A0x421m9Fs60/EWZGHdhkQvff5sql/iXC0/pxgEMWwdrgJ/CZHwknzOfFWYjgrLb/0wn6OfexZ1tvHmzM43nNpKK7cbsHT2HTEF/S5999CqWEQt6UrwfbJbUBRoXvLdPFBfX744varlm7zC8RLJezwwf4eF+XOJAsF5JWkh1tlbok4hEgu455y/WnA6hsHRrmLG1mjW27KX9ZwDulgvGfUneSc/h4N+wZr+eGw== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: On Thu, Mar 20, 2025 at 3:24=E2=80=AFPM Radim Kr=C4=8Dm=C3=A1=C5=99 wrote: > > 2025-03-14T14:39:38-07:00, Deepak Gupta : > > Expose a new register type NT_RISCV_USER_CFI for risc-v cfi status and > > state. Intentionally both landing pad and shadow stack status and state > > are rolled into cfi state. Creating two different NT_RISCV_USER_XXX wou= ld > > not be useful and wastage of a note type. Enabling or disabling of feat= ure > > is not allowed via ptrace set interface. However setting `elp` state or > > setting shadow stack pointer are allowed via ptrace set interface. It i= s > > expected `gdb` might have use to fixup `elp` state or `shadow stack` > > pointer. > > > > Signed-off-by: Deepak Gupta > > --- > > arch/riscv/include/uapi/asm/ptrace.h | 18 ++++++++ > > arch/riscv/kernel/ptrace.c | 83 ++++++++++++++++++++++++++++= ++++++++ > > include/uapi/linux/elf.h | 1 + > > 3 files changed, 102 insertions(+) > > > > diff --git a/arch/riscv/include/uapi/asm/ptrace.h b/arch/riscv/include/= uapi/asm/ptrace.h > > index 659ea3af5680..e6571fba8a8a 100644 > > --- a/arch/riscv/include/uapi/asm/ptrace.h > > +++ b/arch/riscv/include/uapi/asm/ptrace.h > > @@ -131,6 +131,24 @@ struct __sc_riscv_cfi_state { > > unsigned long ss_ptr; /* shadow stack pointer */ > > }; > > > > +struct __cfi_status { > > + /* indirect branch tracking state */ > > + __u64 lp_en : 1; > > + __u64 lp_lock : 1; > > + __u64 elp_state : 1; > > + > > + /* shadow stack status */ > > + __u64 shstk_en : 1; > > + __u64 shstk_lock : 1; > > I remember there was deep hatred towards bitfields in the Linux > community, have things changes? hmm. I didn't know about the strong hatred. Although I can see lots of examples of this pattern in existing kernel code= . No strong feelings on my side, I can change this and have it single 64bit f= ield and accessed via bitmasks. > > > + __u64 rsvd : sizeof(__u64) - 5; > > I think you meant "64 - 5". eeh. bad bug. thanks. > > > +}; > > + > > +struct user_cfi_state { > > + struct __cfi_status cfi_status; > > + __u64 shstk_ptr; > > +}; > > + > > #endif /* __ASSEMBLY__ */ > > > > #endif /* _UAPI_ASM_RISCV_PTRACE_H */ > > diff --git a/arch/riscv/kernel/ptrace.c b/arch/riscv/kernel/ptrace.c > > @@ -224,6 +297,16 @@ static const struct user_regset riscv_user_regset[= ] =3D { > > .set =3D tagged_addr_ctrl_set, > > }, > > #endif > > +#ifdef CONFIG_RISCV_USER_CFI > > + [REGSET_CFI] =3D { > > + .core_note_type =3D NT_RISCV_USER_CFI, > > + .align =3D sizeof(__u64), > > + .n =3D sizeof(struct user_cfi_state) / sizeof(__u64), > > + .size =3D sizeof(__u64), > > Why not `size =3D sizeof(struct user_cfi_state)` and `n =3D 1`? yeah another good catch. Should write a kselftest against it, so that it can be caught. > > > + .regset_get =3D riscv_cfi_get, > > + .set =3D riscv_cfi_set, > > + }, > > +#endif > > [I haven't yet reviewed if a new register is the right thing to do nor > looked at the rest of the patch.]