2023-10-25 07:40:25

by Thomas Huth

[permalink] [raw]
Subject: [PATCH] hexagon: Remove unusable symbols from the ptrace.h uapi

Kernel-internal prototypes, references to current_thread_info()
and code hidden behind a CONFIG_HEXAGON_ARCH_VERSION switch are
certainly not usable in userspace, so this should not reside
in a uapi header. Move the code into an internal version of
ptrace.h instead.

Signed-off-by: Thomas Huth <[email protected]>
---
I've compile tested it now with a hexagon cross-compiler and the kernel
compiles fine with this change, so I think this should be good to go.

arch/hexagon/include/asm/ptrace.h | 25 +++++++++++++++++++++++++
arch/hexagon/include/uapi/asm/ptrace.h | 13 -------------
scripts/headers_install.sh | 1 -
3 files changed, 25 insertions(+), 14 deletions(-)
create mode 100644 arch/hexagon/include/asm/ptrace.h

diff --git a/arch/hexagon/include/asm/ptrace.h b/arch/hexagon/include/asm/ptrace.h
new file mode 100644
index 000000000000..ed35da1ee685
--- /dev/null
+++ b/arch/hexagon/include/asm/ptrace.h
@@ -0,0 +1,25 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+ * Ptrace definitions for the Hexagon architecture
+ *
+ * Copyright (c) 2010-2011, The Linux Foundation. All rights reserved.
+ */
+
+#ifndef _ASM_HEXAGON_PTRACE_H
+#define _ASM_HEXAGON_PTRACE_H
+
+#include <uapi/asm/ptrace.h>
+
+/* kprobe-based event tracer support */
+extern int regs_query_register_offset(const char *name);
+extern const char *regs_query_register_name(unsigned int offset);
+
+#define current_pt_regs() \
+ ((struct pt_regs *) \
+ ((unsigned long)current_thread_info() + THREAD_SIZE) - 1)
+
+#if CONFIG_HEXAGON_ARCH_VERSION >= 4
+#define arch_has_single_step() (1)
+#endif
+
+#endif
diff --git a/arch/hexagon/include/uapi/asm/ptrace.h b/arch/hexagon/include/uapi/asm/ptrace.h
index f79de05b8689..2a3ea14ad9b9 100644
--- a/arch/hexagon/include/uapi/asm/ptrace.h
+++ b/arch/hexagon/include/uapi/asm/ptrace.h
@@ -29,17 +29,4 @@

#define profile_pc(regs) instruction_pointer(regs)

-/* kprobe-based event tracer support */
-extern int regs_query_register_offset(const char *name);
-extern const char *regs_query_register_name(unsigned int offset);
-
-#define current_pt_regs() \
- ((struct pt_regs *) \
- ((unsigned long)current_thread_info() + THREAD_SIZE) - 1)
-
-#if CONFIG_HEXAGON_ARCH_VERSION >= 4
-#define arch_has_single_step() (1)
-#endif
-
-
#endif
diff --git a/scripts/headers_install.sh b/scripts/headers_install.sh
index 56d3c338d91d..c3064ac31003 100755
--- a/scripts/headers_install.sh
+++ b/scripts/headers_install.sh
@@ -74,7 +74,6 @@ arch/arc/include/uapi/asm/page.h:CONFIG_ARC_PAGE_SIZE_16K
arch/arc/include/uapi/asm/page.h:CONFIG_ARC_PAGE_SIZE_4K
arch/arc/include/uapi/asm/swab.h:CONFIG_ARC_HAS_SWAPE
arch/arm/include/uapi/asm/ptrace.h:CONFIG_CPU_ENDIAN_BE8
-arch/hexagon/include/uapi/asm/ptrace.h:CONFIG_HEXAGON_ARCH_VERSION
arch/hexagon/include/uapi/asm/user.h:CONFIG_HEXAGON_ARCH_VERSION
arch/m68k/include/uapi/asm/ptrace.h:CONFIG_COLDFIRE
arch/nios2/include/uapi/asm/swab.h:CONFIG_NIOS2_CI_SWAB_NO
--
2.41.0


2023-10-25 14:01:17

by Arnd Bergmann

[permalink] [raw]
Subject: Re: [PATCH] hexagon: Remove unusable symbols from the ptrace.h uapi

On Wed, Oct 25, 2023, at 09:38, Thomas Huth wrote:
> Kernel-internal prototypes, references to current_thread_info()
> and code hidden behind a CONFIG_HEXAGON_ARCH_VERSION switch are
> certainly not usable in userspace, so this should not reside
> in a uapi header. Move the code into an internal version of
> ptrace.h instead.
>
> Signed-off-by: Thomas Huth <[email protected]>
> ---
> I've compile tested it now with a hexagon cross-compiler and the kernel
> compiles fine with this change, so I think this should be good to go.

I've applied this to the asm-generic tree, thanks for the
patch.

> +++ b/scripts/headers_install.sh
> @@ -74,7 +74,6 @@ arch/arc/include/uapi/asm/page.h:CONFIG_ARC_PAGE_SIZE_16K
> arch/arc/include/uapi/asm/page.h:CONFIG_ARC_PAGE_SIZE_4K
> arch/arc/include/uapi/asm/swab.h:CONFIG_ARC_HAS_SWAPE
> arch/arm/include/uapi/asm/ptrace.h:CONFIG_CPU_ENDIAN_BE8
> -arch/hexagon/include/uapi/asm/ptrace.h:CONFIG_HEXAGON_ARCH_VERSION
> arch/hexagon/include/uapi/asm/user.h:CONFIG_HEXAGON_ARCH_VERSION
> arch/m68k/include/uapi/asm/ptrace.h:CONFIG_COLDFIRE
> arch/nios2/include/uapi/asm/swab.h:CONFIG_NIOS2_CI_SWAB_NO

Would you like to send another patch for the other hexagon
file? It looks trivial enough as we can just drop the #if
portion there and keep the #else side.

Arnd

2023-10-25 14:17:13

by Thomas Huth

[permalink] [raw]
Subject: Re: [PATCH] hexagon: Remove unusable symbols from the ptrace.h uapi

On 25/10/2023 15.59, Arnd Bergmann wrote:
> On Wed, Oct 25, 2023, at 09:38, Thomas Huth wrote:
>> Kernel-internal prototypes, references to current_thread_info()
>> and code hidden behind a CONFIG_HEXAGON_ARCH_VERSION switch are
>> certainly not usable in userspace, so this should not reside
>> in a uapi header. Move the code into an internal version of
>> ptrace.h instead.
>>
>> Signed-off-by: Thomas Huth <[email protected]>
>> ---
>> I've compile tested it now with a hexagon cross-compiler and the kernel
>> compiles fine with this change, so I think this should be good to go.
>
> I've applied this to the asm-generic tree, thanks for the
> patch.

Thanks!

>> +++ b/scripts/headers_install.sh
>> @@ -74,7 +74,6 @@ arch/arc/include/uapi/asm/page.h:CONFIG_ARC_PAGE_SIZE_16K
>> arch/arc/include/uapi/asm/page.h:CONFIG_ARC_PAGE_SIZE_4K
>> arch/arc/include/uapi/asm/swab.h:CONFIG_ARC_HAS_SWAPE
>> arch/arm/include/uapi/asm/ptrace.h:CONFIG_CPU_ENDIAN_BE8
>> -arch/hexagon/include/uapi/asm/ptrace.h:CONFIG_HEXAGON_ARCH_VERSION
>> arch/hexagon/include/uapi/asm/user.h:CONFIG_HEXAGON_ARCH_VERSION
>> arch/m68k/include/uapi/asm/ptrace.h:CONFIG_COLDFIRE
>> arch/nios2/include/uapi/asm/swab.h:CONFIG_NIOS2_CI_SWAB_NO
>
> Would you like to send another patch for the other hexagon
> file? It looks trivial enough as we can just drop the #if
> portion there and keep the #else side.

Looks like we have at least to look carefully at
arch/hexagon/kernel/ptrace.c first ... pad1 is still used there and the of
offsetof(struct user_regs_struct, pad1) results in different values
depending on the CONFIG switch ... but sure, I can have a try to come up
with a patch.

Thomas