diff options
| author | Huacai Chen <chenhuacai@loongson.cn> | 2025-12-06 10:39:48 +0800 |
|---|---|---|
| committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2026-01-08 10:17:06 +0100 |
| commit | 1f8330dcdc6084b10768f159cbb93269b392cc71 (patch) | |
| tree | 61111897dcfc692f8e370a263c2dd68f99098a85 /arch | |
| parent | a6021c133ed8dad7db7eabd6c507264d9aea4375 (diff) | |
| download | linux-1f8330dcdc6084b10768f159cbb93269b392cc71.tar.gz linux-1f8330dcdc6084b10768f159cbb93269b392cc71.tar.bz2 linux-1f8330dcdc6084b10768f159cbb93269b392cc71.zip | |
LoongArch: Fix arch_dup_task_struct() for CONFIG_RANDSTRUCT
commit a91b446e359aa96cc2655318789fd37441337415 upstream.
Now the optimized version of arch_dup_task_struct() for LoongArch
assumes 'thread' is the last member of 'task_struct'. But this is
not true if CONFIG_RANDSTRUCT is enabled after Linux-6.16.
So fix the arch_dup_task_struct() function for CONFIG_RANDSTRUCT by
copying the whole 'task_struct'.
Cc: stable@vger.kernel.org # 6.16+
Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'arch')
| -rw-r--r-- | arch/loongarch/kernel/process.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/arch/loongarch/kernel/process.c b/arch/loongarch/kernel/process.c index efd9edf65603..d1e04f9e0f79 100644 --- a/arch/loongarch/kernel/process.c +++ b/arch/loongarch/kernel/process.c @@ -130,6 +130,11 @@ int arch_dup_task_struct(struct task_struct *dst, struct task_struct *src) preempt_enable(); + if (IS_ENABLED(CONFIG_RANDSTRUCT)) { + memcpy(dst, src, sizeof(struct task_struct)); + return 0; + } + if (!used_math()) memcpy(dst, src, offsetof(struct task_struct, thread.fpu.fpr)); else |
