hexagon: Remove unusable symbols from the ptrace.h uapi

Message ID 20231025073802.117625-1-thuth@redhat.com
State New
Headers
Series hexagon: Remove unusable symbols from the ptrace.h uapi |

Commit Message

Thomas Huth Oct. 25, 2023, 7:38 a.m. UTC
  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 <thuth@redhat.com>
---
 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
  

Comments

Arnd Bergmann Oct. 25, 2023, 1:59 p.m. UTC | #1
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 <thuth@redhat.com>
> ---
>  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
  
Thomas Huth Oct. 25, 2023, 2:15 p.m. UTC | #2
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 <thuth@redhat.com>
>> ---
>>   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
  

Patch

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