Re: [PATCH v2 6/7] ptrace: introduce PTRACE_SET_SYSCALL_INFO request
flat view
From: Oleg Nesterov <oleg@redhat.com>
Date: 2025-01-15 16:38:45
Also in:
lkml
Dmitry, I can't review the non-x86 changes in 1/7 - 4/7. As for this and the previous patch I see nothing bad after a quick glance. Just I have some concerns about the "future extensions", I'll write another email tomorrow. In particualar, I personally hate the very idea of copy_struct_from_user/check_zeroed_user ;) On 01/13, Dmitry V. Levin wrote:
quoted hunk ↗ jump to hunk
+ptrace_set_syscall_info_entry(struct task_struct *child, struct pt_regs *regs, + struct ptrace_syscall_info *info) +{ + unsigned long args[ARRAY_SIZE(info->entry.args)]; + int nr = info->entry.nr; + int i; + + if (nr != info->entry.nr) + return -ERANGE; + + for (i = 0; i < ARRAY_SIZE(args); i++) { + args[i] = info->entry.args[i]; + if (args[i] != info->entry.args[i]) + return -ERANGE; + } + + syscall_set_nr(child, regs, nr); + /* + * If the syscall number is set to -1, setting syscall arguments is not + * just pointless, it would also clobber the syscall return value on + * those architectures that share the same register both for the first + * argument of syscall and its return value. + */ + if (nr != -1) + syscall_set_arguments(child, regs, args);
Thanks, much better than I tried to suggest in my reply to V1. But may be if (syscall_get_nr() != -1) syscall_set_arguments(...); will look a bit more consistent? Oleg.