From: "Chang S. Bae" <chang.seok.bae@intel.com>
To: Andrei Vagin <avagin@gmail.com>
Cc: Andrei Vagin <avagin@google.com>,
Thomas Gleixner <tglx@kernel.org>,
"Ingo Molnar" <mingo@redhat.com>, Borislav Petkov <bp@alien8.de>,
<linux-kernel@vger.kernel.org>, <criu@lists.linux.dev>,
Dave Hansen <dave.hansen@linux.intel.com>, <x86@kernel.org>,
"H. Peter Anvin" <hpa@zytor.com>
Subject: Re: [PATCH 09/10] x86/fpu: Allow restoring signal frames with larger xstate_size
Date: Fri, 31 Jul 2026 17:49:36 -0700 [thread overview]
Message-ID: <1bc74033-ba54-49e1-b548-6742deedf1bf@intel.com> (raw)
In-Reply-To: <CANaxB-w3m4jps=SWH8Nw19nFRSnvAhuiN=FtpebYJcULB7NXUg@mail.gmail.com>
On 7/30/2026 2:26 PM, Andrei Vagin wrote:
> On Tue, Jul 21, 2026 at 5:35 PM Andrei Vagin <avagin@gmail.com> wrote:
>> On Thu, Jul 9, 2026 at 2:15 PM Chang S. Bae <chang.seok.bae@intel.com> wrote:
>>> On 7/7/2026 1:27 PM, Andrei Vagin wrote:
>>>>
>>>> Dynamic XSTATE components (like Intel AMX) require a process to
>>>> explicitly request permission via arch_prctl(ARCH_REQ_XCOMP_PERM, ...).
>>>> During the checkpoint, CRIU detects which dynamic features have been
>>>> enabled for each thread and saves this configuration as part of the
>>>> process image. During the restore, CRIU invokes arch_prctl() on threads
>>>> to request the identical dynamic XSTATE permissions. If the target
>>>> machine doesn't support a specific dynamic state, the restore will fail.
>>>
>>> The permission request itself does not expand a task's fpstate -- it
>>> does not reallocate a larger XSAVE buffer or update its size/xfeatures
>>> attributes.
>>>
>>> Assuming the target task has never touched the dynamic state, if
>>> fx_sw->xstate_size > fpstate->user_size is permitted, while
>>> fx_sw->xfeatures is still used directly as the XRSTOR RFBM, I think it
>>> may be possible to trigger an ugly #NM in the kernel along the way when
>>> CONFIG_X86_DEBUG_FPU=n. If CONFIG_X86_DEBUG_FPU=y, xfd_validate_state()
>>> could guard this by clearing the bit as part of its consistency check.
>>
>> We never pass fx_sw->xfeatures directly to XRSTOR as the RFBM. In
>> __restore_fpregs_from_user(), the restore mask is explicitly restricted:
>> xrestore_mask &= fpu->fpstate->user_xfeatures;
You're right. I misread that path last time. Sigh...
So, to summarize the implication with this patch:
When migrating a user thread with a larger XSTATE layout, unless
userspace prepares the destination (e.g., first touching the dynamic
states to allocate the necessary backing storage), the side effect would
be missing user data. There will be no notion of crash.
Also, relaxing the size check nonetheless still means the signal frame
has sufficient space to hold the states fitting into the destination
task storage, correct?
> Friendly ping on this patch.
Sorry for my delayed response.
Thanks,
Chang
next prev parent reply other threads:[~2026-08-01 0:49 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-06-15 19:37 [PATCH v3 0/10] x86/fpu: Restore and reinforce signal frame portability Andrei Vagin
2026-06-15 19:37 ` [PATCH 01/10] x86/fpu: Document " Andrei Vagin
2026-06-26 13:51 ` Alexander Mikhalitsyn
2026-06-30 19:23 ` Chang S. Bae
2026-06-15 19:37 ` [PATCH 02/10] x86/fpu: Clean up and rename variables in signal frame handling Andrei Vagin
2026-06-26 17:05 ` Alexander Mikhalitsyn
2026-06-15 19:37 ` [PATCH 03/10] x86/fpu: Split __fpu_restore_sig to extract compat path Andrei Vagin
2026-06-26 17:20 ` Alexander Mikhalitsyn
2026-06-15 19:37 ` [PATCH 04/10] x86/fpu: Document reasoning of FX-only fallback Andrei Vagin
2026-06-26 14:22 ` Alexander Mikhalitsyn
2026-06-30 19:23 ` Chang S. Bae
2026-07-31 15:34 ` Andrei Vagin
2026-06-15 19:37 ` [PATCH 05/10] x86/fpu: Fix potential underflow in xstate_calculate_size() Andrei Vagin
2026-06-26 14:32 ` Alexander Mikhalitsyn
2026-06-30 19:23 ` Chang S. Bae
2026-06-15 19:37 ` [PATCH 06/10] selftests/x86: Add a test for signal frame FPU portability Andrei Vagin
2026-06-26 14:39 ` Alexander Mikhalitsyn
2026-06-15 19:37 ` [PATCH 07/10] x86/fpu: Pre-fault only required size of xstate buffer Andrei Vagin
2026-06-26 17:28 ` Alexander Mikhalitsyn
2026-06-15 19:37 ` [PATCH 08/10] selftests/x86: Add a sigframe insufficient xstate_size test Andrei Vagin
2026-06-26 15:02 ` Alexander Mikhalitsyn
2026-06-15 19:37 ` [PATCH 09/10] x86/fpu: Allow restoring signal frames with larger xstate_size Andrei Vagin
2026-06-26 17:32 ` Alexander Mikhalitsyn
2026-06-30 19:23 ` Chang S. Bae
2026-07-01 0:48 ` Andrei Vagin
2026-07-06 17:08 ` Chang S. Bae
2026-07-07 20:27 ` Andrei Vagin
2026-07-09 21:14 ` Chang S. Bae
2026-07-10 22:24 ` Chang S. Bae
2026-07-22 0:35 ` Andrei Vagin
2026-07-30 21:26 ` Andrei Vagin
2026-08-01 0:49 ` Chang S. Bae [this message]
2026-08-04 20:30 ` Andrei Vagin
2026-08-07 15:56 ` Chang S. Bae
2026-08-07 23:12 ` Andrei Vagin
2026-08-08 3:05 ` Chang S. Bae
2026-08-08 18:50 ` Andrei Vagin
2026-08-11 6:06 ` Chang S. Bae
2026-06-15 19:37 ` [PATCH 10/10] selftests/x86: Check restoring FPU state " Andrei Vagin
2026-06-26 15:12 ` Alexander Mikhalitsyn
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1bc74033-ba54-49e1-b548-6742deedf1bf@intel.com \
--to=chang.seok.bae@intel.com \
--cc=avagin@gmail.com \
--cc=avagin@google.com \
--cc=bp@alien8.de \
--cc=criu@lists.linux.dev \
--cc=dave.hansen@linux.intel.com \
--cc=hpa@zytor.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=tglx@kernel.org \
--cc=x86@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.