mirror of
https://github.com/torvalds/linux.git
synced 2024-12-25 04:11:49 +00:00
0d747f6585
For AArch32 tasks, we install a special "[vectors]" page that contains the sigreturn trampolines and kuser helpers, which is mapped at a fixed address specified by the kuser helpers ABI. Having the sigreturn trampolines in the same page as the kuser helpers makes it impossible to disable the kuser helpers independently. Follow the Arm implementation, by moving the signal trampolines out of the "[vectors]" page and into their own "[sigpage]". Cc: Catalin Marinas <catalin.marinas@arm.com> Cc: Will Deacon <will.deacon@arm.com> Signed-off-by: Vincenzo Frascino <vincenzo.frascino@arm.com> Reviewed-by: Catalin Marinas <catalin.marinas@arm.com> [will: tweaked comments and fixed sparse warning] Signed-off-by: Will Deacon <will.deacon@arm.com>
49 lines
1.4 KiB
C
49 lines
1.4 KiB
C
/*
|
|
* Copyright (C) 2012 ARM Ltd.
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License version 2 as
|
|
* published by the Free Software Foundation.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
#ifndef __ASM_SIGNAL32_H
|
|
#define __ASM_SIGNAL32_H
|
|
|
|
#ifdef __KERNEL__
|
|
#ifdef CONFIG_COMPAT
|
|
#include <linux/compat.h>
|
|
|
|
int compat_setup_frame(int usig, struct ksignal *ksig, sigset_t *set,
|
|
struct pt_regs *regs);
|
|
int compat_setup_rt_frame(int usig, struct ksignal *ksig, sigset_t *set,
|
|
struct pt_regs *regs);
|
|
|
|
void compat_setup_restart_syscall(struct pt_regs *regs);
|
|
#else
|
|
|
|
static inline int compat_setup_frame(int usid, struct ksignal *ksig,
|
|
sigset_t *set, struct pt_regs *regs)
|
|
{
|
|
return -ENOSYS;
|
|
}
|
|
|
|
static inline int compat_setup_rt_frame(int usig, struct ksignal *ksig, sigset_t *set,
|
|
struct pt_regs *regs)
|
|
{
|
|
return -ENOSYS;
|
|
}
|
|
|
|
static inline void compat_setup_restart_syscall(struct pt_regs *regs)
|
|
{
|
|
}
|
|
#endif /* CONFIG_COMPAT */
|
|
#endif /* __KERNEL__ */
|
|
#endif /* __ASM_SIGNAL32_H */
|