diff options
Diffstat (limited to 'security/selinux/include')
| -rw-r--r-- | security/selinux/include/avc.h | 29 | ||||
| -rw-r--r-- | security/selinux/include/avc_ss.h | 3 | ||||
| -rw-r--r-- | security/selinux/include/conditional.h | 4 | ||||
| -rw-r--r-- | security/selinux/include/ima.h | 10 | ||||
| -rw-r--r-- | security/selinux/include/security.h | 185 | 
5 files changed, 75 insertions, 156 deletions
diff --git a/security/selinux/include/avc.h b/security/selinux/include/avc.h index 5525b94fd266..9301222c8e55 100644 --- a/security/selinux/include/avc.h +++ b/security/selinux/include/avc.h @@ -52,7 +52,6 @@ struct selinux_audit_data {  	u32 audited;  	u32 denied;  	int result; -	struct selinux_state *state;  } __randomize_layout;  /* @@ -97,14 +96,12 @@ static inline u32 avc_audit_required(u32 requested,  	return audited;  } -int slow_avc_audit(struct selinux_state *state, -		   u32 ssid, u32 tsid, u16 tclass, +int slow_avc_audit(u32 ssid, u32 tsid, u16 tclass,  		   u32 requested, u32 audited, u32 denied, int result,  		   struct common_audit_data *a);  /**   * avc_audit - Audit the granting or denial of permissions. - * @state: SELinux state   * @ssid: source security identifier   * @tsid: target security identifier   * @tclass: target security class @@ -122,8 +119,7 @@ int slow_avc_audit(struct selinux_state *state,   * be performed under a lock, to allow the lock to be released   * before calling the auditing code.   */ -static inline int avc_audit(struct selinux_state *state, -			    u32 ssid, u32 tsid, +static inline int avc_audit(u32 ssid, u32 tsid,  			    u16 tclass, u32 requested,  			    struct av_decision *avd,  			    int result, @@ -133,30 +129,27 @@ static inline int avc_audit(struct selinux_state *state,  	audited = avc_audit_required(requested, avd, result, 0, &denied);  	if (likely(!audited))  		return 0; -	return slow_avc_audit(state, ssid, tsid, tclass, +	return slow_avc_audit(ssid, tsid, tclass,  			      requested, audited, denied, result,  			      a);  }  #define AVC_STRICT 1 /* Ignore permissive mode. */  #define AVC_EXTENDED_PERMS 2	/* update extended permissions */ -int avc_has_perm_noaudit(struct selinux_state *state, -			 u32 ssid, u32 tsid, +int avc_has_perm_noaudit(u32 ssid, u32 tsid,  			 u16 tclass, u32 requested,  			 unsigned flags,  			 struct av_decision *avd); -int avc_has_perm(struct selinux_state *state, -		 u32 ssid, u32 tsid, +int avc_has_perm(u32 ssid, u32 tsid,  		 u16 tclass, u32 requested,  		 struct common_audit_data *auditdata); -int avc_has_extended_perms(struct selinux_state *state, -			   u32 ssid, u32 tsid, u16 tclass, u32 requested, +int avc_has_extended_perms(u32 ssid, u32 tsid, u16 tclass, u32 requested,  			   u8 driver, u8 perm, struct common_audit_data *ad); -u32 avc_policy_seqno(struct selinux_state *state); +u32 avc_policy_seqno(void);  #define AVC_CALLBACK_GRANT		1  #define AVC_CALLBACK_TRY_REVOKE		2 @@ -171,11 +164,9 @@ u32 avc_policy_seqno(struct selinux_state *state);  int avc_add_callback(int (*callback)(u32 event), u32 events);  /* Exported to selinuxfs */ -struct selinux_avc; -int avc_get_hash_stats(struct selinux_avc *avc, char *page); -unsigned int avc_get_cache_threshold(struct selinux_avc *avc); -void avc_set_cache_threshold(struct selinux_avc *avc, -			     unsigned int cache_threshold); +int avc_get_hash_stats(char *page); +unsigned int avc_get_cache_threshold(void); +void avc_set_cache_threshold(unsigned int cache_threshold);  /* Attempt to free avc node cache */  void avc_disable(void); diff --git a/security/selinux/include/avc_ss.h b/security/selinux/include/avc_ss.h index 42912c917fd4..b9668be7b443 100644 --- a/security/selinux/include/avc_ss.h +++ b/security/selinux/include/avc_ss.h @@ -9,8 +9,7 @@  #include <linux/types.h> -struct selinux_avc; -int avc_ss_reset(struct selinux_avc *avc, u32 seqno); +int avc_ss_reset(u32 seqno);  /* Class/perm mapping support */  struct security_class_mapping { diff --git a/security/selinux/include/conditional.h b/security/selinux/include/conditional.h index b09343346e3f..693a654714eb 100644 --- a/security/selinux/include/conditional.h +++ b/security/selinux/include/conditional.h @@ -16,8 +16,8 @@  int security_get_bools(struct selinux_policy *policy,  		       u32 *len, char ***names, int **values); -int security_set_bools(struct selinux_state *state, u32 len, int *values); +int security_set_bools(u32 len, int *values); -int security_get_bool_value(struct selinux_state *state, u32 index); +int security_get_bool_value(u32 index);  #endif diff --git a/security/selinux/include/ima.h b/security/selinux/include/ima.h index 75ca92b4a462..05e04172c86d 100644 --- a/security/selinux/include/ima.h +++ b/security/selinux/include/ima.h @@ -14,15 +14,13 @@  #include "security.h"  #ifdef CONFIG_IMA -extern void selinux_ima_measure_state(struct selinux_state *selinux_state); -extern void selinux_ima_measure_state_locked( -			struct selinux_state *selinux_state); +extern void selinux_ima_measure_state(void); +extern void selinux_ima_measure_state_locked(void);  #else -static inline void selinux_ima_measure_state(struct selinux_state *selinux_state) +static inline void selinux_ima_measure_state(void)  {  } -static inline void selinux_ima_measure_state_locked( -			struct selinux_state *selinux_state) +static inline void selinux_ima_measure_state_locked(void)  {  }  #endif diff --git a/security/selinux/include/security.h b/security/selinux/include/security.h index 393aff41d3ef..8746fafeb778 100644 --- a/security/selinux/include/security.h +++ b/security/selinux/include/security.h @@ -86,94 +86,65 @@ extern int selinux_enabled_boot;  /* limitation of boundary depth  */  #define POLICYDB_BOUNDS_MAXDEPTH	4 -struct selinux_avc;  struct selinux_policy;  struct selinux_state { -#ifdef CONFIG_SECURITY_SELINUX_DISABLE -	bool disabled; -#endif  #ifdef CONFIG_SECURITY_SELINUX_DEVELOP  	bool enforcing;  #endif -	bool checkreqprot;  	bool initialized;  	bool policycap[__POLICYDB_CAP_MAX];  	struct page *status_page;  	struct mutex status_lock; -	struct selinux_avc *avc;  	struct selinux_policy __rcu *policy;  	struct mutex policy_mutex;  } __randomize_layout; -void selinux_avc_init(struct selinux_avc **avc); +void selinux_avc_init(void);  extern struct selinux_state selinux_state; -static inline bool selinux_initialized(const struct selinux_state *state) +static inline bool selinux_initialized(void)  {  	/* do a synchronized load to avoid race conditions */ -	return smp_load_acquire(&state->initialized); +	return smp_load_acquire(&selinux_state.initialized);  } -static inline void selinux_mark_initialized(struct selinux_state *state) +static inline void selinux_mark_initialized(void)  {  	/* do a synchronized write to avoid race conditions */ -	smp_store_release(&state->initialized, true); +	smp_store_release(&selinux_state.initialized, true);  }  #ifdef CONFIG_SECURITY_SELINUX_DEVELOP -static inline bool enforcing_enabled(struct selinux_state *state) +static inline bool enforcing_enabled(void)  { -	return READ_ONCE(state->enforcing); +	return READ_ONCE(selinux_state.enforcing);  } -static inline void enforcing_set(struct selinux_state *state, bool value) +static inline void enforcing_set(bool value)  { -	WRITE_ONCE(state->enforcing, value); +	WRITE_ONCE(selinux_state.enforcing, value);  }  #else -static inline bool enforcing_enabled(struct selinux_state *state) +static inline bool enforcing_enabled(void)  {  	return true;  } -static inline void enforcing_set(struct selinux_state *state, bool value) +static inline void enforcing_set(bool value)  {  }  #endif -static inline bool checkreqprot_get(const struct selinux_state *state) -{ -	return READ_ONCE(state->checkreqprot); -} - -static inline void checkreqprot_set(struct selinux_state *state, bool value) +static inline bool checkreqprot_get(void)  { -	if (value) -		pr_err("SELinux: https://github.com/SELinuxProject/selinux-kernel/wiki/DEPRECATE-checkreqprot\n"); -	WRITE_ONCE(state->checkreqprot, value); +	/* non-zero/true checkreqprot values are no longer supported */ +	return 0;  } -#ifdef CONFIG_SECURITY_SELINUX_DISABLE -static inline bool selinux_disabled(struct selinux_state *state) -{ -	return READ_ONCE(state->disabled); -} - -static inline void selinux_mark_disabled(struct selinux_state *state) -{ -	WRITE_ONCE(state->disabled, true); -} -#else -static inline bool selinux_disabled(struct selinux_state *state) -{ -	return false; -} -#endif -  static inline bool selinux_policycap_netpeer(void)  {  	struct selinux_state *state = &selinux_state; @@ -237,20 +208,14 @@ struct selinux_load_state {  	struct selinux_policy_convert_data *convert_data;  }; -int security_mls_enabled(struct selinux_state *state); -int security_load_policy(struct selinux_state *state, -			 void *data, size_t len, +int security_mls_enabled(void); +int security_load_policy(void *data, size_t len,  			 struct selinux_load_state *load_state); -void selinux_policy_commit(struct selinux_state *state, -			   struct selinux_load_state *load_state); -void selinux_policy_cancel(struct selinux_state *state, -			   struct selinux_load_state *load_state); -int security_read_policy(struct selinux_state *state, -			 void **data, size_t *len); -int security_read_state_kernel(struct selinux_state *state, -			       void **data, size_t *len); -int security_policycap_supported(struct selinux_state *state, -				 unsigned int req_cap); +void selinux_policy_commit(struct selinux_load_state *load_state); +void selinux_policy_cancel(struct selinux_load_state *load_state); +int security_read_policy(void **data, size_t *len); +int security_read_state_kernel(void **data, size_t *len); +int security_policycap_supported(unsigned int req_cap);  #define SEL_VEC_MAX 32  struct av_decision { @@ -287,94 +252,68 @@ struct extended_perms {  /* definitions of av_decision.flags */  #define AVD_FLAGS_PERMISSIVE	0x0001 -void security_compute_av(struct selinux_state *state, -			 u32 ssid, u32 tsid, +void security_compute_av(u32 ssid, u32 tsid,  			 u16 tclass, struct av_decision *avd,  			 struct extended_perms *xperms); -void security_compute_xperms_decision(struct selinux_state *state, -				      u32 ssid, u32 tsid, u16 tclass, +void security_compute_xperms_decision(u32 ssid, u32 tsid, u16 tclass,  				      u8 driver,  				      struct extended_perms_decision *xpermd); -void security_compute_av_user(struct selinux_state *state, -			      u32 ssid, u32 tsid, +void security_compute_av_user(u32 ssid, u32 tsid,  			      u16 tclass, struct av_decision *avd); -int security_transition_sid(struct selinux_state *state, -			    u32 ssid, u32 tsid, u16 tclass, +int security_transition_sid(u32 ssid, u32 tsid, u16 tclass,  			    const struct qstr *qstr, u32 *out_sid); -int security_transition_sid_user(struct selinux_state *state, -				 u32 ssid, u32 tsid, u16 tclass, +int security_transition_sid_user(u32 ssid, u32 tsid, u16 tclass,  				 const char *objname, u32 *out_sid); -int security_member_sid(struct selinux_state *state, u32 ssid, u32 tsid, -			u16 tclass, u32 *out_sid); +int security_member_sid(u32 ssid, u32 tsid, u16 tclass, u32 *out_sid); -int security_change_sid(struct selinux_state *state, u32 ssid, u32 tsid, -			u16 tclass, u32 *out_sid); +int security_change_sid(u32 ssid, u32 tsid, u16 tclass, u32 *out_sid); -int security_sid_to_context(struct selinux_state *state, u32 sid, -			    char **scontext, u32 *scontext_len); +int security_sid_to_context(u32 sid, char **scontext, u32 *scontext_len); -int security_sid_to_context_force(struct selinux_state *state, -				  u32 sid, char **scontext, u32 *scontext_len); +int security_sid_to_context_force(u32 sid, char **scontext, u32 *scontext_len); -int security_sid_to_context_inval(struct selinux_state *state, -				  u32 sid, char **scontext, u32 *scontext_len); +int security_sid_to_context_inval(u32 sid, char **scontext, u32 *scontext_len); -int security_context_to_sid(struct selinux_state *state, -			    const char *scontext, u32 scontext_len, +int security_context_to_sid(const char *scontext, u32 scontext_len,  			    u32 *out_sid, gfp_t gfp); -int security_context_str_to_sid(struct selinux_state *state, -				const char *scontext, u32 *out_sid, gfp_t gfp); +int security_context_str_to_sid(const char *scontext, u32 *out_sid, gfp_t gfp); -int security_context_to_sid_default(struct selinux_state *state, -				    const char *scontext, u32 scontext_len, +int security_context_to_sid_default(const char *scontext, u32 scontext_len,  				    u32 *out_sid, u32 def_sid, gfp_t gfp_flags); -int security_context_to_sid_force(struct selinux_state *state, -				  const char *scontext, u32 scontext_len, +int security_context_to_sid_force(const char *scontext, u32 scontext_len,  				  u32 *sid); -int security_get_user_sids(struct selinux_state *state, -			   u32 callsid, char *username, -			   u32 **sids, u32 *nel); +int security_get_user_sids(u32 callsid, char *username, u32 **sids, u32 *nel); -int security_port_sid(struct selinux_state *state, -		      u8 protocol, u16 port, u32 *out_sid); +int security_port_sid(u8 protocol, u16 port, u32 *out_sid); -int security_ib_pkey_sid(struct selinux_state *state, -			 u64 subnet_prefix, u16 pkey_num, u32 *out_sid); +int security_ib_pkey_sid(u64 subnet_prefix, u16 pkey_num, u32 *out_sid); -int security_ib_endport_sid(struct selinux_state *state, -			    const char *dev_name, u8 port_num, u32 *out_sid); +int security_ib_endport_sid(const char *dev_name, u8 port_num, u32 *out_sid); -int security_netif_sid(struct selinux_state *state, -		       char *name, u32 *if_sid); +int security_netif_sid(char *name, u32 *if_sid); -int security_node_sid(struct selinux_state *state, -		      u16 domain, void *addr, u32 addrlen, +int security_node_sid(u16 domain, void *addr, u32 addrlen,  		      u32 *out_sid); -int security_validate_transition(struct selinux_state *state, -				 u32 oldsid, u32 newsid, u32 tasksid, +int security_validate_transition(u32 oldsid, u32 newsid, u32 tasksid,  				 u16 tclass); -int security_validate_transition_user(struct selinux_state *state, -				      u32 oldsid, u32 newsid, u32 tasksid, +int security_validate_transition_user(u32 oldsid, u32 newsid, u32 tasksid,  				      u16 tclass); -int security_bounded_transition(struct selinux_state *state, -				u32 oldsid, u32 newsid); +int security_bounded_transition(u32 oldsid, u32 newsid); -int security_sid_mls_copy(struct selinux_state *state, -			  u32 sid, u32 mls_sid, u32 *new_sid); +int security_sid_mls_copy(u32 sid, u32 mls_sid, u32 *new_sid); -int security_net_peersid_resolve(struct selinux_state *state, -				 u32 nlbl_sid, u32 nlbl_type, +int security_net_peersid_resolve(u32 nlbl_sid, u32 nlbl_type,  				 u32 xfrm_sid,  				 u32 *peer_sid); @@ -382,8 +321,8 @@ int security_get_classes(struct selinux_policy *policy,  			 char ***classes, int *nclasses);  int security_get_permissions(struct selinux_policy *policy,  			     char *class, char ***perms, int *nperms); -int security_get_reject_unknown(struct selinux_state *state); -int security_get_allow_unknown(struct selinux_state *state); +int security_get_reject_unknown(void); +int security_get_allow_unknown(void);  #define SECURITY_FS_USE_XATTR		1 /* use xattr */  #define SECURITY_FS_USE_TRANS		2 /* use transition SIDs, e.g. devpts/tmpfs */ @@ -394,10 +333,9 @@ int security_get_allow_unknown(struct selinux_state *state);  #define SECURITY_FS_USE_NATIVE		7 /* use native label support */  #define SECURITY_FS_USE_MAX		7 /* Highest SECURITY_FS_USE_XXX */ -int security_fs_use(struct selinux_state *state, struct super_block *sb); +int security_fs_use(struct super_block *sb); -int security_genfs_sid(struct selinux_state *state, -		       const char *fstype, const char *path, u16 sclass, +int security_genfs_sid(const char *fstype, const char *path, u16 sclass,  		       u32 *sid);  int selinux_policy_genfs_sid(struct selinux_policy *policy, @@ -405,23 +343,19 @@ int selinux_policy_genfs_sid(struct selinux_policy *policy,  		       u32 *sid);  #ifdef CONFIG_NETLABEL -int security_netlbl_secattr_to_sid(struct selinux_state *state, -				   struct netlbl_lsm_secattr *secattr, +int security_netlbl_secattr_to_sid(struct netlbl_lsm_secattr *secattr,  				   u32 *sid); -int security_netlbl_sid_to_secattr(struct selinux_state *state, -				   u32 sid, +int security_netlbl_sid_to_secattr(u32 sid,  				   struct netlbl_lsm_secattr *secattr);  #else -static inline int security_netlbl_secattr_to_sid(struct selinux_state *state, -					    struct netlbl_lsm_secattr *secattr, +static inline int security_netlbl_secattr_to_sid(struct netlbl_lsm_secattr *secattr,  					    u32 *sid)  {  	return -EIDRM;  } -static inline int security_netlbl_sid_to_secattr(struct selinux_state *state, -					 u32 sid, +static inline int security_netlbl_sid_to_secattr(u32 sid,  					 struct netlbl_lsm_secattr *secattr)  {  	return -ENOENT; @@ -433,7 +367,7 @@ const char *security_get_initial_sid_context(u32 sid);  /*   * status notifier using mmap interface   */ -extern struct page *selinux_kernel_status_page(struct selinux_state *state); +extern struct page *selinux_kernel_status_page(void);  #define SELINUX_KERNEL_STATUS_VERSION	1  struct selinux_kernel_status { @@ -447,12 +381,9 @@ struct selinux_kernel_status {  	 */  } __packed; -extern void selinux_status_update_setenforce(struct selinux_state *state, -					     int enforcing); -extern void selinux_status_update_policyload(struct selinux_state *state, -					     int seqno); +extern void selinux_status_update_setenforce(int enforcing); +extern void selinux_status_update_policyload(int seqno);  extern void selinux_complete_init(void); -extern int selinux_disable(struct selinux_state *state);  extern void exit_sel_fs(void);  extern struct path selinux_null;  extern void selnl_notify_setenforce(int val); @@ -462,6 +393,6 @@ extern int selinux_nlmsg_lookup(u16 sclass, u16 nlmsg_type, u32 *perm);  extern void avtab_cache_init(void);  extern void ebitmap_cache_init(void);  extern void hashtab_cache_init(void); -extern int security_sidtab_hash_stats(struct selinux_state *state, char *page); +extern int security_sidtab_hash_stats(char *page);  #endif /* _SELINUX_SECURITY_H_ */  |