| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- /* SPDX-License-Identifier: GPL-2.0 */
- /*
- * Copyright (C) 2015 Thomas Meyer (thomas@m3y3r.de)
- * Copyright (C) 2005 Jeff Dike (jdike@karaya.com)
- */
- #ifndef __STUB_DATA_H
- #define __STUB_DATA_H
- #include <linux/compiler_types.h>
- #include <as-layout.h>
- #include <sysdep/tls.h>
- #include <sysdep/stub-data.h>
- #include <mm_id.h>
- #define FUTEX_IN_CHILD 0
- #define FUTEX_IN_KERN 1
- struct stub_init_data {
- int seccomp;
- unsigned long stub_start;
- int stub_code_fd;
- unsigned long stub_code_offset;
- int stub_data_fd;
- unsigned long stub_data_offset;
- unsigned long signal_handler;
- unsigned long signal_restorer;
- };
- #define STUB_NEXT_SYSCALL(s) \
- ((struct stub_syscall *) (((unsigned long) s) + (s)->cmd_len))
- enum stub_syscall_type {
- STUB_SYSCALL_UNSET = 0,
- STUB_SYSCALL_MMAP,
- STUB_SYSCALL_MUNMAP,
- };
- struct stub_syscall {
- struct {
- unsigned long addr;
- unsigned long length;
- unsigned long offset;
- int fd;
- int prot;
- } mem;
- enum stub_syscall_type syscall;
- };
- struct stub_data {
- long err;
- int syscall_data_len;
- /* 128 leaves enough room for additional fields in the struct */
- struct stub_syscall syscall_data[(UM_KERN_PAGE_SIZE - 128) / sizeof(struct stub_syscall)] __aligned(16);
- /* data shared with signal handler (only used in seccomp mode) */
- short restart_wait;
- unsigned int futex;
- int signal;
- unsigned short si_offset;
- unsigned short mctx_offset;
- /* seccomp architecture specific state restore */
- struct stub_data_arch arch_data;
- /* Stack for our signal handlers and for calling into . */
- unsigned char sigstack[UM_KERN_PAGE_SIZE] __aligned(UM_KERN_PAGE_SIZE);
- };
- #endif
|