Skip to content
Snippets Groups Projects
Select Git revision
  • af43cd033c64384c521a9cb1fb68660d7799435c
  • master default protected
  • android-7.1.2_r28_klist
  • oreo-mr1-iot-release
  • sdk-release
  • pie-cts-dev
  • pie-cts-release
  • pie-vts-release
  • nougat-iot-release
  • pie-gsi
  • pie-platform-release
  • pie-r2-release
  • pie-r2-s1-release
  • pie-release
  • pie-dev
  • oreo-m4-s4-release
  • o-mr1-iot-preview-8
  • oreo-m2-s2-release
  • oreo-m2-s1-release
  • oreo-m6-s2-release
  • oreo-m6-s3-release
  • android-o-mr1-iot-release-1.0.4
  • android-9.0.0_r8
  • android-9.0.0_r7
  • android-9.0.0_r6
  • android-9.0.0_r5
  • android-8.1.0_r46
  • android-8.1.0_r45
  • android-n-iot-release-smart-display-r2
  • android-vts-8.1_r5
  • android-cts-8.1_r8
  • android-cts-8.0_r12
  • android-cts-7.1_r20
  • android-cts-7.0_r24
  • android-cts-6.0_r31
  • android-o-mr1-iot-release-1.0.3
  • android-cts-9.0_r1
  • android-8.1.0_r43
  • android-8.1.0_r42
  • android-n-iot-release-smart-display
  • android-p-preview-5
41 results

ioctl.c

Blame
  • seccomp.h 3.15 KiB
    #ifndef _LINUX_SECCOMP_H
    #define _LINUX_SECCOMP_H
    
    #include <linux/compiler.h>
    #include <linux/types.h>
    
    
    /* Valid values for seccomp.mode and prctl(PR_SET_SECCOMP, <mode>) */
    #define SECCOMP_MODE_DISABLED	0 /* seccomp is not in use. */
    #define SECCOMP_MODE_STRICT	1 /* uses hard-coded filter. */
    #define SECCOMP_MODE_FILTER	2 /* uses user-supplied filter. */
    
    /*
     * All BPF programs must return a 32-bit value.
     * The bottom 16-bits are for optional return data.
     * The upper 16-bits are ordered from least permissive values to most.
     *
     * The ordering ensures that a min_t() over composed return values always
     * selects the least permissive choice.
     */
    #define SECCOMP_RET_KILL	0x00000000U /* kill the task immediately */
    #define SECCOMP_RET_ERRNO	0x00050000U /* returns an errno */
    #define SECCOMP_RET_ALLOW	0x7fff0000U /* allow */
    
    /* Masks for the return value sections. */
    #define SECCOMP_RET_ACTION	0x7fff0000U
    #define SECCOMP_RET_DATA	0x0000ffffU
    
    /**
     * struct seccomp_data - the format the BPF program executes over.
     * @nr: the system call number
     * @arch: indicates system call convention as an AUDIT_ARCH_* value
     *        as defined in <linux/audit.h>.
     * @instruction_pointer: at the time of the system call.
     * @args: up to 6 system call arguments always stored as 64-bit values
     *        regardless of the architecture.
     */
    struct seccomp_data {
    	int nr;
    	__u32 arch;
    	__u64 instruction_pointer;
    	__u64 args[6];
    };
    
    #ifdef __KERNEL__
    #ifdef CONFIG_SECCOMP
    
    #include <linux/thread_info.h>
    #include <asm/seccomp.h>
    
    struct seccomp_filter;
    /**
     * struct seccomp - the state of a seccomp'ed process
     *
     * @mode:  indicates one of the valid values above for controlled
     *         system calls available to a process.
     * @filter: The metadata and ruleset for determining what system calls
     *          are allowed for a task.
     *
     *          @filter must only be accessed from the context of current as there
     *          is no locking.
     */
    struct seccomp {
    	int mode;
    	struct seccomp_filter *filter;
    };
    
    extern int __secure_computing(int);
    static inline int secure_computing(int this_syscall)
    {
    	if (unlikely(test_thread_flag(TIF_SECCOMP)))
    		return  __secure_computing(this_syscall);
    	return 0;
    }
    
    extern long prctl_get_seccomp(void);
    extern long prctl_set_seccomp(unsigned long, char __user *);
    
    static inline int seccomp_mode(struct seccomp *s)
    {
    	return s->mode;
    }
    
    #else /* CONFIG_SECCOMP */
    
    #include <linux/errno.h>
    
    struct seccomp { };
    struct seccomp_filter { };
    
    #define secure_computing(x) 0
    
    static inline long prctl_get_seccomp(void)
    {
    	return -EINVAL;
    }
    
    static inline long prctl_set_seccomp(unsigned long arg2, char __user *arg3)
    {
    	return -EINVAL;
    }
    
    static inline int seccomp_mode(struct seccomp *s)
    {
    	return 0;
    }
    #endif /* CONFIG_SECCOMP */
    
    #ifdef CONFIG_SECCOMP_FILTER
    extern void put_seccomp_filter(struct task_struct *tsk);
    extern void get_seccomp_filter(struct task_struct *tsk);
    extern u32 seccomp_bpf_load(int off);
    #else  /* CONFIG_SECCOMP_FILTER */
    static inline void put_seccomp_filter(struct task_struct *tsk)
    {
    	return;
    }
    static inline void get_seccomp_filter(struct task_struct *tsk)
    {
    	return;
    }
    #endif /* CONFIG_SECCOMP_FILTER */
    #endif /* __KERNEL__ */
    #endif /* _LINUX_SECCOMP_H */