]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
parisc: Fix signal code to depend on CONFIG_COMPAT instead of CONFIG_64BIT
authorHelge Deller <deller@gmx.de>
Tue, 7 Apr 2026 22:04:55 +0000 (00:04 +0200)
committerHelge Deller <deller@gmx.de>
Fri, 17 Apr 2026 13:46:45 +0000 (15:46 +0200)
The signal handler code used CONFIG_64BIT to decide if compat handling
code should be compiled in. Fix it to use CONFIG_COMPAT instead.
This allows to disable CONFIG_COMPAT even when running a 64-bit kernel.

Signed-off-by: Helge Deller <deller@gmx.de>
arch/parisc/kernel/signal.c

index e8d27def6c5210ad526469149dbd3449a4a1ab60..64a62006bb15a2532682501f3a0b6f44f3932d70 100644 (file)
@@ -80,7 +80,7 @@ sys_rt_sigreturn(struct pt_regs *regs, int in_syscall)
        sigset_t set;
        unsigned long usp = (regs->gr[30] & ~(0x01UL));
        unsigned long sigframe_size = PARISC_RT_SIGFRAME_SIZE;
-#ifdef CONFIG_64BIT
+#ifdef CONFIG_COMPAT
        struct compat_rt_sigframe __user * compat_frame;
        
        if (is_compat_task())
@@ -96,7 +96,7 @@ sys_rt_sigreturn(struct pt_regs *regs, int in_syscall)
 
        regs->orig_r28 = 1; /* no restarts for sigreturn */
 
-#ifdef CONFIG_64BIT
+#ifdef CONFIG_COMPAT
        compat_frame = (struct compat_rt_sigframe __user *)frame;
        
        if (is_compat_task()) {
@@ -112,7 +112,7 @@ sys_rt_sigreturn(struct pt_regs *regs, int in_syscall)
        set_current_blocked(&set);
 
        /* Good thing we saved the old gr[30], eh? */
-#ifdef CONFIG_64BIT
+#ifdef CONFIG_COMPAT
        if (is_compat_task()) {
                DBG(1, "%s: compat_frame->uc.uc_mcontext 0x%p\n",
                                __func__, &compat_frame->uc.uc_mcontext);
@@ -218,13 +218,13 @@ setup_rt_frame(struct ksignal *ksig, sigset_t *set, struct pt_regs *regs,
        unsigned long haddr, sigframe_size;
        unsigned long start;
        int err = 0;
-#ifdef CONFIG_64BIT
+#ifdef CONFIG_COMPAT
        struct compat_rt_sigframe __user * compat_frame;
 #endif
-       
+
        usp = (regs->gr[30] & ~(0x01UL));
        sigframe_size = PARISC_RT_SIGFRAME_SIZE;
-#ifdef CONFIG_64BIT
+#ifdef CONFIG_COMPAT
        if (is_compat_task()) {
                /* The gcc alloca implementation leaves garbage in the upper 32 bits of sp */
                usp = (compat_uint_t)usp;
@@ -239,7 +239,7 @@ setup_rt_frame(struct ksignal *ksig, sigset_t *set, struct pt_regs *regs,
        if (start >= TASK_SIZE_MAX - sigframe_size)
                return -EFAULT;
        
-#ifdef CONFIG_64BIT
+#ifdef CONFIG_COMPAT
 
        compat_frame = (struct compat_rt_sigframe __user *)frame;
        
@@ -349,8 +349,8 @@ setup_rt_frame(struct ksignal *ksig, sigset_t *set, struct pt_regs *regs,
 
        regs->gr[2]  = rp;                      /* userland return pointer */
        regs->gr[26] = ksig->sig;               /* signal number */
-       
-#ifdef CONFIG_64BIT
+
+#ifdef CONFIG_COMPAT
        if (is_compat_task()) {
                regs->gr[25] = A(&compat_frame->info); /* siginfo pointer */
                regs->gr[24] = A(&compat_frame->uc);   /* ucontext pointer */