mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-05-15 12:12:53 +00:00
x86/arch_prctl: Simplify sys_arch_prctl()
Use in_ia32_syscall() instead of a compat syscall entry. No change in functionality intended. Signed-off-by: Brian Gerst <brgerst@gmail.com> Signed-off-by: Ingo Molnar <mingo@kernel.org> Cc: "H. Peter Anvin" <hpa@zytor.com> Link: https://lore.kernel.org/r/20250202202323.422113-2-brgerst@gmail.com
This commit is contained in:
parent
06dd759b68
commit
2df1ad0d25
5 changed files with 6 additions and 27 deletions
|
@ -396,7 +396,7 @@
|
|||
381 i386 pkey_alloc sys_pkey_alloc
|
||||
382 i386 pkey_free sys_pkey_free
|
||||
383 i386 statx sys_statx
|
||||
384 i386 arch_prctl sys_arch_prctl compat_sys_arch_prctl
|
||||
384 i386 arch_prctl sys_arch_prctl
|
||||
385 i386 io_pgetevents sys_io_pgetevents_time32 compat_sys_io_pgetevents
|
||||
386 i386 rseq sys_rseq
|
||||
393 i386 semget sys_semget
|
||||
|
|
|
@ -15,7 +15,6 @@ void entry_SYSCALL_64(void);
|
|||
void entry_SYSCALL_64_safe_stack(void);
|
||||
void entry_SYSRETQ_unsafe_stack(void);
|
||||
void entry_SYSRETQ_end(void);
|
||||
long do_arch_prctl_64(struct task_struct *task, int option, unsigned long arg2);
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_X86_32
|
||||
|
@ -41,6 +40,6 @@ void x86_configure_nx(void);
|
|||
|
||||
extern int reboot_force;
|
||||
|
||||
long do_arch_prctl_common(int option, unsigned long arg2);
|
||||
long do_arch_prctl_64(struct task_struct *task, int option, unsigned long arg2);
|
||||
|
||||
#endif /* _ASM_X86_PROTO_H */
|
||||
|
|
|
@ -1043,7 +1043,7 @@ unsigned long __get_wchan(struct task_struct *p)
|
|||
return addr;
|
||||
}
|
||||
|
||||
long do_arch_prctl_common(int option, unsigned long arg2)
|
||||
SYSCALL_DEFINE2(arch_prctl, int, option, unsigned long, arg2)
|
||||
{
|
||||
switch (option) {
|
||||
case ARCH_GET_CPUID:
|
||||
|
@ -1058,5 +1058,8 @@ long do_arch_prctl_common(int option, unsigned long arg2)
|
|||
return fpu_xstate_prctl(option, arg2);
|
||||
}
|
||||
|
||||
if (!in_ia32_syscall())
|
||||
return do_arch_prctl_64(current, option, arg2);
|
||||
|
||||
return -EINVAL;
|
||||
}
|
||||
|
|
|
@ -215,8 +215,3 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p)
|
|||
|
||||
return prev_p;
|
||||
}
|
||||
|
||||
SYSCALL_DEFINE2(arch_prctl, int, option, unsigned long, arg2)
|
||||
{
|
||||
return do_arch_prctl_common(option, arg2);
|
||||
}
|
||||
|
|
|
@ -980,24 +980,6 @@ long do_arch_prctl_64(struct task_struct *task, int option, unsigned long arg2)
|
|||
return ret;
|
||||
}
|
||||
|
||||
SYSCALL_DEFINE2(arch_prctl, int, option, unsigned long, arg2)
|
||||
{
|
||||
long ret;
|
||||
|
||||
ret = do_arch_prctl_64(current, option, arg2);
|
||||
if (ret == -EINVAL)
|
||||
ret = do_arch_prctl_common(option, arg2);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_IA32_EMULATION
|
||||
COMPAT_SYSCALL_DEFINE2(arch_prctl, int, option, unsigned long, arg2)
|
||||
{
|
||||
return do_arch_prctl_common(option, arg2);
|
||||
}
|
||||
#endif
|
||||
|
||||
unsigned long KSTK_ESP(struct task_struct *task)
|
||||
{
|
||||
return task_pt_regs(task)->sp;
|
||||
|
|
Loading…
Add table
Reference in a new issue