Skip to content
Snippets Groups Projects
Select Git revision
  • android-msm-3.9-usb-and-mmc-hacks
  • master default protected
  • android-msm-bullhead-3.10-nougat_kgdb_less_changes
  • android-msm-bullhead-3.10-nougat_kgdb
  • android-msm-bullhead-3.10-nougat_klist
  • android-4.4
  • android-msm-vega-4.4-oreo-daydream
  • android-msm-wahoo-4.4-p-preview-5
  • android-msm-wahoo-4.4-pie
  • android-msm-marlin-3.18-p-preview-5
  • android-msm-marlin-3.18-pie
  • android-msm-wahoo-2018.07-oreo-m2
  • android-msm-wahoo-2018.07-oreo-m4
  • android-msm-wahoo-4.4-p-preview-4
  • android-msm-bullhead-3.10-oreo-m6
  • android-msm-angler-3.10-oreo-m6
  • android-msm-marlin-3.18-p-preview-4
  • android-msm-stargazer-3.18-oreo-wear-dr
  • android-msm-catshark-3.18-oreo-wear-dr
  • android-msm-wahoo-4.4-oreo-m2
  • android-msm-wahoo-4.4-oreo-m4
  • android-daydreamos-8.0.0_r0.5
  • android-8.1.0_r0.92
  • android-8.1.0_r0.91
  • android-daydreamos-8.0.0_r0.4
  • android-p-preview-5_r0.2
  • android-p-preview-5_r0.1
  • android-9.0.0_r0.5
  • android-9.0.0_r0.4
  • android-9.0.0_r0.2
  • android-9.0.0_r0.1
  • android-8.1.0_r0.81
  • android-8.1.0_r0.80
  • android-8.1.0_r0.78
  • android-8.1.0_r0.76
  • android-8.1.0_r0.75
  • android-8.1.0_r0.72
  • android-8.1.0_r0.70
  • android-p-preview-4_r0.2
  • android-p-preview-4_r0.1
  • android-wear-8.0.0_r0.30
41 results

Kbuild

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 */