From: Ingo Molnar <mingo@kernel.org>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Oleg Nesterov <oleg@redhat.com>,
linux-kernel@vger.kernel.org,
Andy Lutomirski <luto@amacapital.net>,
Andrew Morton <akpm@linux-foundation.org>,
Dave Hansen <dave@sr71.net>,
Peter Zijlstra <peterz@infradead.org>,
Borislav Petkov <bp@alien8.de>, "H . Peter Anvin" <hpa@zytor.com>,
Thomas Gleixner <tglx@linutronix.de>,
Uros Bizjak <ubizjak@gmail.com>
Subject: Re: [PATCH 3/3, v4] x86/fpu: Remove init_task FPU state dependencies, add debugging warning for PF_KTHREAD tasks
Date: Thu, 6 Jun 2024 10:48:33 +0200 [thread overview]
Message-ID: <ZmF34YbJPrV7WQzn@gmail.com> (raw)
In-Reply-To: <ZmFziN0i10sILaIo@gmail.com>
* Ingo Molnar <mingo@kernel.org> wrote:
> I changed the debug check to test for PF_KTHREAD, and to return NULL:
>
> +#ifdef CONFIG_X86_DEBUG_FPU
> +struct fpu *x86_task_fpu(struct task_struct *task)
> +{
> + if (WARN_ON_ONCE(task->flags & PF_KTHREAD))
> + return NULL;
> +
> + return (void *)task + sizeof(*task);
> +}
> +#endif
>
> ... and the NULL we return will likely crash & exit any kthreads attempting
> to use the FPU context area - which I think is preferable to returning
> invalid memory that may then be corrupted.
>
> Hopefully this remains a hypothethical concern. :-)
>
> Alternatively, this may be one of the very few cases where a BUG_ON() might
> be justified? This condition is not recoverable in any sane fashion IMO.
And promptly this triggered in live testing, because while kthreads do not
use the FPU context area, the current fpu__drop() code does call
x86_task_cpu() even for kthreads...
See the two new 4/3 and 5/3 patches in this thread I've sent that clean
this up:
[PATCH 4/3] x86/fpu: Push 'fpu' pointer calculation into the fpu__drop() call
[PATCH 5/3] x86/fpu: Make sure x86_task_fpu() doesn't get called for PF_KTHREAD tasks during exit
I'll also reorder the patches to apply these fpu__drop() changes before
adding the debug warning.
Thanks,
Ingo
next prev parent reply other threads:[~2024-06-06 8:48 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-06-05 8:35 [PATCH 0/3, v3] x86/fpu: Remove the thread::fpu pointer Ingo Molnar
2024-06-05 8:35 ` [PATCH 1/3] x86/fpu: Make task_struct::thread constant size Ingo Molnar
2024-06-05 19:04 ` Chang S. Bae
2024-06-06 9:30 ` [PATCH] x86/fpu: Fix stale comment in ex_handler_fprestore() Ingo Molnar
2024-06-06 15:55 ` Chang S. Bae
2024-06-05 8:35 ` [PATCH 2/3] x86/fpu: Remove the thread::fpu pointer Ingo Molnar
2024-06-05 13:38 ` Oleg Nesterov
2024-06-06 8:53 ` Ingo Molnar
2024-06-08 6:55 ` Ingo Molnar
2024-06-08 7:26 ` Ingo Molnar
2024-06-08 10:10 ` Oleg Nesterov
2024-06-25 5:26 ` Edgecombe, Rick P
2024-06-25 13:45 ` Edgecombe, Rick P
2024-06-05 8:35 ` [PATCH 3/3] x86/fpu: Remove init_task FPU state dependencies, add debugging warning Ingo Molnar
2024-06-05 14:17 ` Oleg Nesterov
2024-06-05 16:08 ` Linus Torvalds
2024-06-05 16:26 ` Oleg Nesterov
2024-06-05 17:28 ` Linus Torvalds
2024-06-06 8:30 ` [PATCH 3/3, v4] x86/fpu: Remove init_task FPU state dependencies, add debugging warning for PF_KTHREAD tasks Ingo Molnar
2024-06-06 8:46 ` [PATCH 4/3] x86/fpu: Push 'fpu' pointer calculation into the fpu__drop() call Ingo Molnar
2024-06-06 8:47 ` [PATCH 5/3] x86/fpu: Make sure x86_task_fpu() doesn't get called for PF_KTHREAD tasks during exit Ingo Molnar
2024-06-06 8:48 ` Ingo Molnar [this message]
2024-06-06 12:00 ` [PATCH 3/3, v4] x86/fpu: Remove init_task FPU state dependencies, add debugging warning for PF_KTHREAD tasks Oleg Nesterov
2024-06-07 10:56 ` Ingo Molnar
2024-06-24 6:47 ` [PATCH 3/3] x86/fpu: Remove init_task FPU state dependencies, add debugging warning Ning, Hongyu
2024-06-27 3:50 ` Ning, Hongyu
2024-06-05 21:21 ` [PATCH 0/3, v3] x86/fpu: Remove the thread::fpu pointer Brian Gerst
2024-06-06 9:06 ` [PATCH] x86/fpu: Introduce the x86_task_fpu() helper method Ingo Molnar
2024-06-06 15:35 ` Brian Gerst
2024-06-07 11:38 ` Ingo Molnar
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=ZmF34YbJPrV7WQzn@gmail.com \
--to=mingo@kernel.org \
--cc=akpm@linux-foundation.org \
--cc=bp@alien8.de \
--cc=dave@sr71.net \
--cc=hpa@zytor.com \
--cc=linux-kernel@vger.kernel.org \
--cc=luto@amacapital.net \
--cc=oleg@redhat.com \
--cc=peterz@infradead.org \
--cc=tglx@linutronix.de \
--cc=torvalds@linux-foundation.org \
--cc=ubizjak@gmail.com \
/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.