From: "Dmitry V. Levin" <ldv@strace.io>
To: Christophe Leroy <christophe.leroy@csgroup.eu>
Cc: Oleg Nesterov <oleg@redhat.com>,
linux-snps-arc@lists.infradead.org, Rich Felker <dalias@libc.org>,
Thomas Gleixner <tglx@linutronix.de>,
Andreas Larsson <andreas@gaisler.com>,
Catalin Marinas <catalin.marinas@arm.com>,
John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>,
x86@kernel.org, Arnd Bergmann <arnd@arndb.de>,
linux-mips@vger.kernel.org,
"James E.J. Bottomley" <James.Bottomley@HansenPartnership.com>,
"H. Peter Anvin" <hpa@zytor.com>,
sparclinux@vger.kernel.org, linux-hexagon@vger.kernel.org,
WANG Xuerui <kernel@xen0n.name>, Will Deacon <will@kernel.org>,
Eugene Syromyatnikov <evgsyr@gmail.com>,
Anton Ivanov <anton.ivanov@cambridgegreys.com>,
Jonas Bonn <jonas@southpole.se>,
linux-s390@vger.kernel.org,
Alexander Gordeev <agordeev@linux.ibm.com>,
Madhavan Srinivasan <maddy@linux.ibm.com>,
Vasily Gorbik <gor@linux.ibm.com>,
Yoshinori Sato <ysato@users.sourceforge.jp>,
linux-sh@vger.kernel.org, Michael Ellerman <mpe@ellerman.id.au>,
Helge Deller <deller@gmx.de>, Huacai Chen <chenhuacai@kernel.org>,
Russell King <linux@armlinux.org.uk>,
linux-riscv@lists.infradead.org,
Dave Hansen <dave.hansen@linux.intel.com>,
Ingo Molnar <mingo@redhat.com>,
Geert Uytterhoeven <geert@linux-m68k.org>,
Vineet Gupta <vgupta@kernel.org>,
Christian Borntraeger <borntraeger@linux.ibm.com>,
strace-devel@lists.strace.io, linux-arch@vger.kernel.org,
Albert Ou <aou@eecs.berkeley.edu>,
Mike Frysinger <vapier@gentoo.org>,
Davide Berardi <berardi.dav@gmail.com>,
Renzo Davoli <renzo@cs.unibo.it>,
linux-um@lists.infradead.org, Heiko Carstens <hca@linux.ibm.com>,
Charlie Jenkins <charlie@rivosinc.com>,
Naveen N Rao <naveen@kernel.org>,
Nicholas Piggin <npiggin@gmail.com>,
Stefan Kristiansson <stefan.kristiansson@saunalahti.fi>,
linux-m68k@lists.linux-m68k.org, Borislav Petkov <bp@alien8.de>,
loongarch@lists.linux.dev,
Paul Walmsley <paul.walmsley@sifive.com>,
Stafford Horne <shorne@gmail.com>,
linux-arm-kernel@lists.infradead.org,
Brian Cain <bcain@quicinc.com>, Michal Simek <monstr@monstr.eu>,
Thomas Bogendoerfer <tsbogend@alpha.franken.de>,
linux-parisc@vger.kernel.org, linux-openrisc@vger.kernel.org,
linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org,
Dinh Nguyen <dinguyen@kernel.org>,
Palmer Dabbelt <palmer@dabbelt.com>,
Sven Schnelle <svens@linux.ibm.com>,
Richard Weinberger <richard@nod.at>,
Johannes Berg <johannes@sipsolutions.net>,
Alexey Gladkov <legion@kernel.org>,
"David S. Miller" <davem@davemloft.net>
Subject: Re: [PATCH v3 3/6] syscall.h: introduce syscall_set_nr()
Date: Tue, 28 Jan 2025 18:25:44 +0200 [thread overview]
Message-ID: <20250128162544.GE11869@strace.io> (raw)
In-Reply-To: <e76df471-1346-459a-9f24-fa053d7dcbe8@csgroup.eu>
On Tue, Jan 28, 2025 at 04:13:52PM +0100, Christophe Leroy wrote:
> Le 28/01/2025 à 10:16, Dmitry V. Levin a écrit :
> > Similar to syscall_set_arguments() that complements
> > syscall_get_arguments(), introduce syscall_set_nr()
> > that complements syscall_get_nr().
> >
> > syscall_set_nr() is going to be needed along with
> > syscall_set_arguments() on all HAVE_ARCH_TRACEHOOK
> > architectures to implement PTRACE_SET_SYSCALL_INFO API.
> >
> > Signed-off-by: Dmitry V. Levin <ldv@strace.io>
> > Tested-by: Charlie Jenkins <charlie@rivosinc.com>
> > Reviewed-by: Charlie Jenkins <charlie@rivosinc.com>
> > ---
> > arch/arc/include/asm/syscall.h | 11 +++++++++++
> > arch/arm/include/asm/syscall.h | 24 ++++++++++++++++++++++++
> > arch/arm64/include/asm/syscall.h | 16 ++++++++++++++++
> > arch/hexagon/include/asm/syscall.h | 7 +++++++
> > arch/loongarch/include/asm/syscall.h | 7 +++++++
> > arch/m68k/include/asm/syscall.h | 7 +++++++
> > arch/microblaze/include/asm/syscall.h | 7 +++++++
> > arch/mips/include/asm/syscall.h | 14 ++++++++++++++
> > arch/nios2/include/asm/syscall.h | 5 +++++
> > arch/openrisc/include/asm/syscall.h | 6 ++++++
> > arch/parisc/include/asm/syscall.h | 7 +++++++
> > arch/powerpc/include/asm/syscall.h | 10 ++++++++++
> > arch/riscv/include/asm/syscall.h | 7 +++++++
> > arch/s390/include/asm/syscall.h | 12 ++++++++++++
> > arch/sh/include/asm/syscall_32.h | 12 ++++++++++++
> > arch/sparc/include/asm/syscall.h | 12 ++++++++++++
> > arch/um/include/asm/syscall-generic.h | 5 +++++
> > arch/x86/include/asm/syscall.h | 7 +++++++
> > arch/xtensa/include/asm/syscall.h | 7 +++++++
> > include/asm-generic/syscall.h | 14 ++++++++++++++
> > 20 files changed, 197 insertions(+)
> >
>
> > diff --git a/arch/arm64/include/asm/syscall.h b/arch/arm64/include/asm/syscall.h
> > index 76020b66286b..712daa90e643 100644
> > --- a/arch/arm64/include/asm/syscall.h
> > +++ b/arch/arm64/include/asm/syscall.h
> > @@ -61,6 +61,22 @@ static inline void syscall_set_return_value(struct task_struct *task,
> > regs->regs[0] = val;
> > }
> >
> > +static inline void syscall_set_nr(struct task_struct *task,
> > + struct pt_regs *regs,
> > + int nr)
> > +{
> > + regs->syscallno = nr;
> > + if (nr == -1) {
> > + /*
> > + * When the syscall number is set to -1, the syscall will be
> > + * skipped. In this case the syscall return value has to be
> > + * set explicitly, otherwise the first syscall argument is
> > + * returned as the syscall return value.
> > + */
> > + syscall_set_return_value(task, regs, -ENOSYS, 0);
> > + }
> > +}
> > +
> > #define SYSCALL_MAX_ARGS 6
> >
> > static inline void syscall_get_arguments(struct task_struct *task,
>
> > diff --git a/arch/powerpc/include/asm/syscall.h b/arch/powerpc/include/asm/syscall.h
> > index 521f279e6b33..7505dcfed247 100644
> > --- a/arch/powerpc/include/asm/syscall.h
> > +++ b/arch/powerpc/include/asm/syscall.h
> > @@ -39,6 +39,16 @@ static inline int syscall_get_nr(struct task_struct *task, struct pt_regs *regs)
> > return -1;
> > }
> >
> > +static inline void syscall_set_nr(struct task_struct *task, struct pt_regs *regs, int nr)
> > +{
> > + /*
> > + * Unlike syscall_get_nr(), syscall_set_nr() can be called only when
> > + * the target task is stopped for tracing on entering syscall, so
> > + * there is no need to have the same check syscall_get_nr() has.
> > + */
> > + regs->gpr[0] = nr;
>
> Doesn't the same as for ARM64 apply here as well ?
I carefully checked all affected architectures and added that
syscall_set_return_value() call only where I think it's needed.
On powerpc it's not needed with the current implementation: their
do_seccomp() sets -ENOSYS before __secure_computing() invocation, and
their do_syscall_trace_enter() sets -ENOSYS in case of an invalid syscall
number.
--
ldv
WARNING: multiple messages have this Message-ID (diff)
From: "Dmitry V. Levin" <ldv@strace.io>
To: Christophe Leroy <christophe.leroy@csgroup.eu>
Cc: Oleg Nesterov <oleg@redhat.com>,
linux-snps-arc@lists.infradead.org, Rich Felker <dalias@libc.org>,
Thomas Gleixner <tglx@linutronix.de>,
Andreas Larsson <andreas@gaisler.com>,
Catalin Marinas <catalin.marinas@arm.com>,
John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>,
x86@kernel.org, Arnd Bergmann <arnd@arndb.de>,
linux-mips@vger.kernel.org,
"James E.J. Bottomley" <James.Bottomley@HansenPartnership.com>,
"H. Peter Anvin" <hpa@zytor.com>,
sparclinux@vger.kernel.org, linux-hexagon@vger.kernel.org,
WANG Xuerui <kernel@xen0n.name>, Will Deacon <will@kernel.org>,
Eugene Syromyatnikov <evgsyr@gmail.com>,
Anton Ivanov <anton.ivanov@cambridgegreys.com>,
Jonas Bonn <jonas@southpole.se>,
linux-s390@vger.kernel.org,
Alexander Gordeev <agordeev@linux.ibm.com>,
Madhavan Srinivasan <maddy@linux.ibm.com>,
Vasily Gorbik <gor@linux.ibm.com>,
Yoshinori Sato <ysato@users.sourceforge.jp>,
linux-sh@vger.kernel.org, Michael Ellerman <mpe@ellerman.id.au>,
Helge Deller <deller@gmx.de>, Huacai Chen <chenhuacai@kernel.org>,
Russell King <linux@armlinux.org.uk>,
linux-riscv@lists.infradead.org,
Dave Hansen <dave.hansen@linux.intel.com>,
Ingo Molnar <mingo@redhat.com>,
Geert Uytterhoeven <geert@linux-m68k.org>,
Vineet Gupta <vgupta@kernel.org>,
Christian Borntraeger <borntraeger@linux.ibm.com>,
strace-devel@lists.strace.io, linux-arch@vger.kernel.org,
Albert Ou <aou@eecs.berkeley.edu>,
Mike Frysinger <vapier@gentoo.org>,
Davide Berardi <berardi.dav@gmail.com>,
Renzo Davoli <renzo@cs.unibo.it>,
linux-um@lists.infradead.org, Heiko Carstens <hca@linux.ibm.com>,
Charlie Jenkins <charlie@rivosinc.com>,
Naveen N Rao <naveen@kernel.org>,
Nicholas Piggin <npiggin@gmail.com>,
Stefan Kristiansson <stefan.kristiansson@saunalahti.fi>,
linux-m68k@lists.linux-m68k.org, Borislav Petkov <bp@alien8.de>,
loongarch@lists.linux.dev,
Paul Walmsley <paul.walmsley@sifive.com>,
Stafford Horne <shorne@gmail.com>,
linux-arm-kernel@lists.infradead.org,
Brian Cain <bcain@quicinc.com>, Michal Simek <monstr@monstr.eu>,
Thomas Bogendoerfer <tsbogend@alpha.franken.de>,
linux-parisc@vger.kernel.org, linux-openrisc@vger.kernel.org,
linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org,
Dinh Nguyen <dinguyen@kernel.org>,
Palmer Dabbelt <palmer@dabbelt.com>,
Sven Schnelle <svens@linux.ibm.com>,
Richard Weinberger <richard@nod.at>,
Johannes Berg <johannes@sipsolutions.net>,
Alexey Gladkov <legion@kernel.org>,
"David S. Miller" <davem@davemloft.net>
Subject: Re: [PATCH v3 3/6] syscall.h: introduce syscall_set_nr()
Date: Tue, 28 Jan 2025 18:25:44 +0200 [thread overview]
Message-ID: <20250128162544.GE11869@strace.io> (raw)
In-Reply-To: <e76df471-1346-459a-9f24-fa053d7dcbe8@csgroup.eu>
On Tue, Jan 28, 2025 at 04:13:52PM +0100, Christophe Leroy wrote:
> Le 28/01/2025 à 10:16, Dmitry V. Levin a écrit :
> > Similar to syscall_set_arguments() that complements
> > syscall_get_arguments(), introduce syscall_set_nr()
> > that complements syscall_get_nr().
> >
> > syscall_set_nr() is going to be needed along with
> > syscall_set_arguments() on all HAVE_ARCH_TRACEHOOK
> > architectures to implement PTRACE_SET_SYSCALL_INFO API.
> >
> > Signed-off-by: Dmitry V. Levin <ldv@strace.io>
> > Tested-by: Charlie Jenkins <charlie@rivosinc.com>
> > Reviewed-by: Charlie Jenkins <charlie@rivosinc.com>
> > ---
> > arch/arc/include/asm/syscall.h | 11 +++++++++++
> > arch/arm/include/asm/syscall.h | 24 ++++++++++++++++++++++++
> > arch/arm64/include/asm/syscall.h | 16 ++++++++++++++++
> > arch/hexagon/include/asm/syscall.h | 7 +++++++
> > arch/loongarch/include/asm/syscall.h | 7 +++++++
> > arch/m68k/include/asm/syscall.h | 7 +++++++
> > arch/microblaze/include/asm/syscall.h | 7 +++++++
> > arch/mips/include/asm/syscall.h | 14 ++++++++++++++
> > arch/nios2/include/asm/syscall.h | 5 +++++
> > arch/openrisc/include/asm/syscall.h | 6 ++++++
> > arch/parisc/include/asm/syscall.h | 7 +++++++
> > arch/powerpc/include/asm/syscall.h | 10 ++++++++++
> > arch/riscv/include/asm/syscall.h | 7 +++++++
> > arch/s390/include/asm/syscall.h | 12 ++++++++++++
> > arch/sh/include/asm/syscall_32.h | 12 ++++++++++++
> > arch/sparc/include/asm/syscall.h | 12 ++++++++++++
> > arch/um/include/asm/syscall-generic.h | 5 +++++
> > arch/x86/include/asm/syscall.h | 7 +++++++
> > arch/xtensa/include/asm/syscall.h | 7 +++++++
> > include/asm-generic/syscall.h | 14 ++++++++++++++
> > 20 files changed, 197 insertions(+)
> >
>
> > diff --git a/arch/arm64/include/asm/syscall.h b/arch/arm64/include/asm/syscall.h
> > index 76020b66286b..712daa90e643 100644
> > --- a/arch/arm64/include/asm/syscall.h
> > +++ b/arch/arm64/include/asm/syscall.h
> > @@ -61,6 +61,22 @@ static inline void syscall_set_return_value(struct task_struct *task,
> > regs->regs[0] = val;
> > }
> >
> > +static inline void syscall_set_nr(struct task_struct *task,
> > + struct pt_regs *regs,
> > + int nr)
> > +{
> > + regs->syscallno = nr;
> > + if (nr == -1) {
> > + /*
> > + * When the syscall number is set to -1, the syscall will be
> > + * skipped. In this case the syscall return value has to be
> > + * set explicitly, otherwise the first syscall argument is
> > + * returned as the syscall return value.
> > + */
> > + syscall_set_return_value(task, regs, -ENOSYS, 0);
> > + }
> > +}
> > +
> > #define SYSCALL_MAX_ARGS 6
> >
> > static inline void syscall_get_arguments(struct task_struct *task,
>
> > diff --git a/arch/powerpc/include/asm/syscall.h b/arch/powerpc/include/asm/syscall.h
> > index 521f279e6b33..7505dcfed247 100644
> > --- a/arch/powerpc/include/asm/syscall.h
> > +++ b/arch/powerpc/include/asm/syscall.h
> > @@ -39,6 +39,16 @@ static inline int syscall_get_nr(struct task_struct *task, struct pt_regs *regs)
> > return -1;
> > }
> >
> > +static inline void syscall_set_nr(struct task_struct *task, struct pt_regs *regs, int nr)
> > +{
> > + /*
> > + * Unlike syscall_get_nr(), syscall_set_nr() can be called only when
> > + * the target task is stopped for tracing on entering syscall, so
> > + * there is no need to have the same check syscall_get_nr() has.
> > + */
> > + regs->gpr[0] = nr;
>
> Doesn't the same as for ARM64 apply here as well ?
I carefully checked all affected architectures and added that
syscall_set_return_value() call only where I think it's needed.
On powerpc it's not needed with the current implementation: their
do_seccomp() sets -ENOSYS before __secure_computing() invocation, and
their do_syscall_trace_enter() sets -ENOSYS in case of an invalid syscall
number.
--
ldv
_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv
WARNING: multiple messages have this Message-ID (diff)
From: "Dmitry V. Levin" <ldv@strace.io>
To: Christophe Leroy <christophe.leroy@csgroup.eu>
Cc: Oleg Nesterov <oleg@redhat.com>,
linux-snps-arc@lists.infradead.org, Rich Felker <dalias@libc.org>,
Thomas Gleixner <tglx@linutronix.de>,
Andreas Larsson <andreas@gaisler.com>,
Catalin Marinas <catalin.marinas@arm.com>,
John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>,
x86@kernel.org, Arnd Bergmann <arnd@arndb.de>,
linux-mips@vger.kernel.org,
"James E.J. Bottomley" <James.Bottomley@HansenPartnership.com>,
"H. Peter Anvin" <hpa@zytor.com>,
sparclinux@vger.kernel.org, linux-hexagon@vger.kernel.org,
WANG Xuerui <kernel@xen0n.name>, Will Deacon <will@kernel.org>,
Eugene Syromyatnikov <evgsyr@gmail.com>,
Anton Ivanov <anton.ivanov@cambridgegreys.com>,
Jonas Bonn <jonas@southpole.se>,
linux-s390@vger.kernel.org,
Alexander Gordeev <agordeev@linux.ibm.com>,
Madhavan Srinivasan <maddy@linux.ibm.com>,
Vasily Gorbik <gor@linux.ibm.com>,
Yoshinori Sato <ysato@users.sourceforge.jp>,
linux-sh@vger.kernel.org, Michael Ellerman <mpe@ellerman.id.au>,
Helge Deller <deller@gmx.de>, Huacai Chen <chenhuacai@kernel.org>,
Russell King <linux@armlinux.org.uk>,
linux-riscv@lists.infradead.org,
Dave Hansen <dave.hansen@linux.intel.com>,
Ingo Molnar <mingo@redhat.com>,
Geert Uytterhoeven <geert@linux-m68k.org>,
Vineet Gupta <vgupta@kernel.org>,
Christian Borntraeger <borntraeger@linux.ibm.com>,
strace-devel@lists.strace.io, linux-arch@vger.kernel.org,
Albert Ou <aou@eecs.berkeley.edu>,
Mike Frysinger <vapier@gentoo.org>,
Davide Berardi <berardi.dav@gmail.com>,
Renzo Davoli <renzo@cs.unibo.it>,
linux-um@lists.infradead.org, Heiko Carstens <hca@linux.ibm.com>,
Charlie Jenkins <charlie@rivosinc.com>,
Naveen N Rao <naveen@kernel.org>,
Nicholas Piggin <npiggin@gmail.com>,
Stefan Kristiansson <stefan.kristiansson@saunalahti.fi>,
linux-m68k@lists.linux-m68k.org, Borislav Petkov <bp@alien8.de>,
loongarch@lists.linux.dev,
Paul Walmsley <paul.walmsley@sifive.com>,
Stafford Horne <shorne@gmail.com>,
linux-arm-kernel@lists.infradead.org,
Brian Cain <bcain@quicinc.com>, Michal Simek <monstr@monstr.eu>,
Thomas Bogendoerfer <tsbogend@alpha.franken.de>,
linux-parisc@vger.kernel.org, linux-openrisc@vger.kernel.org,
linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org,
Dinh Nguyen <dinguyen@kernel.org>,
Palmer Dabbelt <palmer@dabbelt.com>,
Sven Schnelle <svens@linux.ibm.com>,
Richard Weinberger <richard@nod.at>,
Johannes Berg <johannes@sipsolutions.net>,
Alexey Gladkov <legion@kernel.org>,
"David S. Miller" <davem@davemloft.net>
Subject: Re: [PATCH v3 3/6] syscall.h: introduce syscall_set_nr()
Date: Tue, 28 Jan 2025 18:25:44 +0200 [thread overview]
Message-ID: <20250128162544.GE11869@strace.io> (raw)
In-Reply-To: <e76df471-1346-459a-9f24-fa053d7dcbe8@csgroup.eu>
On Tue, Jan 28, 2025 at 04:13:52PM +0100, Christophe Leroy wrote:
> Le 28/01/2025 à 10:16, Dmitry V. Levin a écrit :
> > Similar to syscall_set_arguments() that complements
> > syscall_get_arguments(), introduce syscall_set_nr()
> > that complements syscall_get_nr().
> >
> > syscall_set_nr() is going to be needed along with
> > syscall_set_arguments() on all HAVE_ARCH_TRACEHOOK
> > architectures to implement PTRACE_SET_SYSCALL_INFO API.
> >
> > Signed-off-by: Dmitry V. Levin <ldv@strace.io>
> > Tested-by: Charlie Jenkins <charlie@rivosinc.com>
> > Reviewed-by: Charlie Jenkins <charlie@rivosinc.com>
> > ---
> > arch/arc/include/asm/syscall.h | 11 +++++++++++
> > arch/arm/include/asm/syscall.h | 24 ++++++++++++++++++++++++
> > arch/arm64/include/asm/syscall.h | 16 ++++++++++++++++
> > arch/hexagon/include/asm/syscall.h | 7 +++++++
> > arch/loongarch/include/asm/syscall.h | 7 +++++++
> > arch/m68k/include/asm/syscall.h | 7 +++++++
> > arch/microblaze/include/asm/syscall.h | 7 +++++++
> > arch/mips/include/asm/syscall.h | 14 ++++++++++++++
> > arch/nios2/include/asm/syscall.h | 5 +++++
> > arch/openrisc/include/asm/syscall.h | 6 ++++++
> > arch/parisc/include/asm/syscall.h | 7 +++++++
> > arch/powerpc/include/asm/syscall.h | 10 ++++++++++
> > arch/riscv/include/asm/syscall.h | 7 +++++++
> > arch/s390/include/asm/syscall.h | 12 ++++++++++++
> > arch/sh/include/asm/syscall_32.h | 12 ++++++++++++
> > arch/sparc/include/asm/syscall.h | 12 ++++++++++++
> > arch/um/include/asm/syscall-generic.h | 5 +++++
> > arch/x86/include/asm/syscall.h | 7 +++++++
> > arch/xtensa/include/asm/syscall.h | 7 +++++++
> > include/asm-generic/syscall.h | 14 ++++++++++++++
> > 20 files changed, 197 insertions(+)
> >
>
> > diff --git a/arch/arm64/include/asm/syscall.h b/arch/arm64/include/asm/syscall.h
> > index 76020b66286b..712daa90e643 100644
> > --- a/arch/arm64/include/asm/syscall.h
> > +++ b/arch/arm64/include/asm/syscall.h
> > @@ -61,6 +61,22 @@ static inline void syscall_set_return_value(struct task_struct *task,
> > regs->regs[0] = val;
> > }
> >
> > +static inline void syscall_set_nr(struct task_struct *task,
> > + struct pt_regs *regs,
> > + int nr)
> > +{
> > + regs->syscallno = nr;
> > + if (nr == -1) {
> > + /*
> > + * When the syscall number is set to -1, the syscall will be
> > + * skipped. In this case the syscall return value has to be
> > + * set explicitly, otherwise the first syscall argument is
> > + * returned as the syscall return value.
> > + */
> > + syscall_set_return_value(task, regs, -ENOSYS, 0);
> > + }
> > +}
> > +
> > #define SYSCALL_MAX_ARGS 6
> >
> > static inline void syscall_get_arguments(struct task_struct *task,
>
> > diff --git a/arch/powerpc/include/asm/syscall.h b/arch/powerpc/include/asm/syscall.h
> > index 521f279e6b33..7505dcfed247 100644
> > --- a/arch/powerpc/include/asm/syscall.h
> > +++ b/arch/powerpc/include/asm/syscall.h
> > @@ -39,6 +39,16 @@ static inline int syscall_get_nr(struct task_struct *task, struct pt_regs *regs)
> > return -1;
> > }
> >
> > +static inline void syscall_set_nr(struct task_struct *task, struct pt_regs *regs, int nr)
> > +{
> > + /*
> > + * Unlike syscall_get_nr(), syscall_set_nr() can be called only when
> > + * the target task is stopped for tracing on entering syscall, so
> > + * there is no need to have the same check syscall_get_nr() has.
> > + */
> > + regs->gpr[0] = nr;
>
> Doesn't the same as for ARM64 apply here as well ?
I carefully checked all affected architectures and added that
syscall_set_return_value() call only where I think it's needed.
On powerpc it's not needed with the current implementation: their
do_seccomp() sets -ENOSYS before __secure_computing() invocation, and
their do_syscall_trace_enter() sets -ENOSYS in case of an invalid syscall
number.
--
ldv
_______________________________________________
linux-snps-arc mailing list
linux-snps-arc@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-snps-arc
next prev parent reply other threads:[~2025-01-28 16:25 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-01-28 9:14 [PATCH v3 0/6] ptrace: introduce PTRACE_SET_SYSCALL_INFO API Dmitry V. Levin
2025-01-28 9:14 ` Dmitry V. Levin
2025-01-28 9:14 ` Dmitry V. Levin
2025-01-28 9:16 ` [PATCH v3 1/6] mips: fix mips_get_syscall_arg() for o32 Dmitry V. Levin
2025-01-28 9:16 ` [PATCH v3 2/6] syscall.h: add syscall_set_arguments() and syscall_set_return_value() Dmitry V. Levin
2025-01-28 9:16 ` Dmitry V. Levin
2025-01-28 9:16 ` Dmitry V. Levin
2025-01-28 15:04 ` Christophe Leroy
2025-01-28 15:04 ` Christophe Leroy
2025-01-28 15:04 ` Christophe Leroy
2025-01-28 16:17 ` Dmitry V. Levin
2025-01-28 16:17 ` Dmitry V. Levin
2025-01-28 16:17 ` Dmitry V. Levin
2025-01-30 8:33 ` Sven Schnelle
2025-01-30 8:33 ` Sven Schnelle
2025-01-30 8:33 ` Sven Schnelle
2025-01-30 11:22 ` Dmitry V. Levin
2025-01-30 11:22 ` Dmitry V. Levin
2025-01-30 11:22 ` Dmitry V. Levin
2025-01-30 11:36 ` Sven Schnelle
2025-01-30 11:36 ` Sven Schnelle
2025-01-30 11:36 ` Sven Schnelle
2025-01-28 9:16 ` [PATCH v3 3/6] syscall.h: introduce syscall_set_nr() Dmitry V. Levin
2025-01-28 9:16 ` Dmitry V. Levin
2025-01-28 9:16 ` Dmitry V. Levin
2025-01-28 15:13 ` Christophe Leroy
2025-01-28 15:13 ` Christophe Leroy
2025-01-28 15:13 ` Christophe Leroy
2025-01-28 16:25 ` Dmitry V. Levin [this message]
2025-01-28 16:25 ` Dmitry V. Levin
2025-01-28 16:25 ` Dmitry V. Levin
2025-01-28 9:16 ` [PATCH v3 4/6] ptrace_get_syscall_info: factor out ptrace_get_syscall_info_op Dmitry V. Levin
2025-01-28 9:16 ` [PATCH v3 5/6] ptrace: introduce PTRACE_SET_SYSCALL_INFO request Dmitry V. Levin
2025-01-28 15:21 ` Christophe Leroy
2025-01-28 15:58 ` Dmitry V. Levin
2025-01-28 9:16 ` [PATCH v3 6/6] selftests/ptrace: add a test case for PTRACE_SET_SYSCALL_INFO Dmitry V. Levin
2025-01-29 18:51 ` [PATCH v3 0/6] ptrace: introduce PTRACE_SET_SYSCALL_INFO API Oleg Nesterov
2025-01-29 18:51 ` Oleg Nesterov
2025-01-29 18:51 ` Oleg Nesterov
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=20250128162544.GE11869@strace.io \
--to=ldv@strace.io \
--cc=James.Bottomley@HansenPartnership.com \
--cc=agordeev@linux.ibm.com \
--cc=andreas@gaisler.com \
--cc=anton.ivanov@cambridgegreys.com \
--cc=aou@eecs.berkeley.edu \
--cc=arnd@arndb.de \
--cc=bcain@quicinc.com \
--cc=berardi.dav@gmail.com \
--cc=borntraeger@linux.ibm.com \
--cc=bp@alien8.de \
--cc=catalin.marinas@arm.com \
--cc=charlie@rivosinc.com \
--cc=chenhuacai@kernel.org \
--cc=christophe.leroy@csgroup.eu \
--cc=dalias@libc.org \
--cc=dave.hansen@linux.intel.com \
--cc=davem@davemloft.net \
--cc=deller@gmx.de \
--cc=dinguyen@kernel.org \
--cc=evgsyr@gmail.com \
--cc=geert@linux-m68k.org \
--cc=glaubitz@physik.fu-berlin.de \
--cc=gor@linux.ibm.com \
--cc=hca@linux.ibm.com \
--cc=hpa@zytor.com \
--cc=johannes@sipsolutions.net \
--cc=jonas@southpole.se \
--cc=kernel@xen0n.name \
--cc=legion@kernel.org \
--cc=linux-arch@vger.kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-hexagon@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-m68k@lists.linux-m68k.org \
--cc=linux-mips@vger.kernel.org \
--cc=linux-openrisc@vger.kernel.org \
--cc=linux-parisc@vger.kernel.org \
--cc=linux-riscv@lists.infradead.org \
--cc=linux-s390@vger.kernel.org \
--cc=linux-sh@vger.kernel.org \
--cc=linux-snps-arc@lists.infradead.org \
--cc=linux-um@lists.infradead.org \
--cc=linux@armlinux.org.uk \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=loongarch@lists.linux.dev \
--cc=maddy@linux.ibm.com \
--cc=mingo@redhat.com \
--cc=monstr@monstr.eu \
--cc=mpe@ellerman.id.au \
--cc=naveen@kernel.org \
--cc=npiggin@gmail.com \
--cc=oleg@redhat.com \
--cc=palmer@dabbelt.com \
--cc=paul.walmsley@sifive.com \
--cc=renzo@cs.unibo.it \
--cc=richard@nod.at \
--cc=shorne@gmail.com \
--cc=sparclinux@vger.kernel.org \
--cc=stefan.kristiansson@saunalahti.fi \
--cc=strace-devel@lists.strace.io \
--cc=svens@linux.ibm.com \
--cc=tglx@linutronix.de \
--cc=tsbogend@alpha.franken.de \
--cc=vapier@gentoo.org \
--cc=vgupta@kernel.org \
--cc=will@kernel.org \
--cc=x86@kernel.org \
--cc=ysato@users.sourceforge.jp \
/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.