From: Jens Axboe <axboe@kernel.dk>
To: Will Deacon <will@kernel.org>
Cc: Catalin Marinas <catalin.marinas@arm.com>,
linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH] arm64: treat PF_IO_WORKER like PF_KTHREAD for mitigations
Date: Tue, 28 Mar 2023 10:47:18 -0600 [thread overview]
Message-ID: <5209a880-483d-bad0-1339-eb0e06da5413@kernel.dk> (raw)
In-Reply-To: <20230328141420.GC1333@willie-the-truck>
On 3/28/23 8:14?AM, Will Deacon wrote:
> Hey Jens,
>
> On Thu, Jan 26, 2023 at 07:07:45AM -0700, Jens Axboe wrote:
>> On 1/26/23 7:00?AM, Will Deacon wrote:
>>> On Wed, Jan 25, 2023 at 09:43:34AM -0700, Jens Axboe wrote:
>>>> Like PF_KTHREAD, PF_IO_WORKER never exit to userspace. They exist
>>>> entirely within the kernel, and hence don't need any task mitigations
>>>> applied.
>>>>
>>>> Signed-off-by: Jens Axboe <axboe@kernel.dk>
>>>>
>>>> ---
>>>>
>>>> diff --git a/arch/arm64/kernel/proton-pack.c b/arch/arm64/kernel/proton-pack.c
>>>> index fca9cc6f5581..25a21c3d446c 100644
>>>> --- a/arch/arm64/kernel/proton-pack.c
>>>> +++ b/arch/arm64/kernel/proton-pack.c
>>>> @@ -654,7 +654,7 @@ static void __update_pstate_ssbs(struct pt_regs *regs, bool state)
>>>> void spectre_v4_enable_task_mitigation(struct task_struct *tsk)
>>>> {
>>>> struct pt_regs *regs = task_pt_regs(tsk);
>>>> - bool ssbs = false, kthread = tsk->flags & PF_KTHREAD;
>>>> + bool ssbs = false, kthread = tsk->flags & (PF_KTHREAD | PF_IO_WORKER);
>>>
>>> Hmm, the other two uses of PF_KTHREAD in arch/arm64 also look pretty
>>> suspect in light of this proposal. Should we also update
>>> ssbs_thread_switch() and access_ok()? If not, then a comment would be
>>> handy to say why PF_KTHREAD is sufficient there.
>>
>> The uaccess one looks like, PF_IO_WORKER threads are just normal userspace
>> threads. The only difference is that they never exit to userspace, they
>> remain in the kernel. But everything else is just like a thread.
>>
>> But yes, the ssbs_thread_switch() should have this check too. I'll send
>> out an updated patch.
>
> I think this one slipped through the cracks, as I don't see any usage of
> PF_IO_WORKER in arch/arm64/. Do you plan to update the patch?
>
Oops, yes looks like it did. Should look something like this, added a
comment as well. I'll send it out properly.
diff --git a/arch/arm64/kernel/process.c b/arch/arm64/kernel/process.c
index 71d59b5abede..9ce614b2177e 100644
--- a/arch/arm64/kernel/process.c
+++ b/arch/arm64/kernel/process.c
@@ -445,9 +445,11 @@ static void ssbs_thread_switch(struct task_struct *next)
{
/*
* Nothing to do for kernel threads, but 'regs' may be junk
- * (e.g. idle task) so check the flags and bail early.
+ * (e.g. idle task) so check the flags and bail early. Nothing to do
+ * for IO worker threads either, as they never transition between
+ * kernel and userspace.
*/
- if (unlikely(next->flags & PF_KTHREAD))
+ if (unlikely(next->flags & (PF_KTHREAD | PF_IO_WORKER)))
return;
/*
diff --git a/arch/arm64/kernel/proton-pack.c b/arch/arm64/kernel/proton-pack.c
index fca9cc6f5581..25a21c3d446c 100644
--- a/arch/arm64/kernel/proton-pack.c
+++ b/arch/arm64/kernel/proton-pack.c
@@ -654,7 +654,7 @@ static void __update_pstate_ssbs(struct pt_regs *regs, bool state)
void spectre_v4_enable_task_mitigation(struct task_struct *tsk)
{
struct pt_regs *regs = task_pt_regs(tsk);
- bool ssbs = false, kthread = tsk->flags & PF_KTHREAD;
+ bool ssbs = false, kthread = tsk->flags & (PF_KTHREAD | PF_IO_WORKER);
if (spectre_v4_mitigations_off())
ssbs = true;
--
Jens Axboe
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
prev parent reply other threads:[~2023-03-28 16:48 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-01-25 16:43 [PATCH] arm64: treat PF_IO_WORKER like PF_KTHREAD for mitigations Jens Axboe
2023-01-26 14:00 ` Will Deacon
2023-01-26 14:07 ` Jens Axboe
2023-01-26 15:04 ` Catalin Marinas
2023-03-28 14:14 ` Will Deacon
2023-03-28 16:47 ` Jens Axboe [this message]
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=5209a880-483d-bad0-1339-eb0e06da5413@kernel.dk \
--to=axboe@kernel.dk \
--cc=catalin.marinas@arm.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=will@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.