diff options
Diffstat (limited to 'include/linux/lsm_hooks.h')
| -rw-r--r-- | include/linux/lsm_hooks.h | 49 | 
1 files changed, 31 insertions, 18 deletions
diff --git a/include/linux/lsm_hooks.h b/include/linux/lsm_hooks.h index 9a0bdf91e646..85a301632cf1 100644 --- a/include/linux/lsm_hooks.h +++ b/include/linux/lsm_hooks.h @@ -1270,7 +1270,7 @@   *	@cred contains the credentials to use.   *	@ns contains the user namespace we want the capability in   *	@cap contains the capability <include/linux/capability.h>. - *	@audit contains whether to write an audit message or not + *	@opts contains options for the capable check <include/linux/security.h>   *	Return 0 if the capability is granted for @tsk.   * @syslog:   *	Check permission before accessing the kernel message ring or changing @@ -1344,7 +1344,6 @@   *	@field contains the field which relates to current LSM.   *	@op contains the operator that will be used for matching.   *	@rule points to the audit rule that will be checked against. - *	@actx points to the audit context associated with the check.   *	Return 1 if secid matches the rule, 0 if it does not, -ERRNO on failure.   *   * @audit_rule_free: @@ -1446,8 +1445,10 @@ union security_list_options {  			const kernel_cap_t *effective,  			const kernel_cap_t *inheritable,  			const kernel_cap_t *permitted); -	int (*capable)(const struct cred *cred, struct user_namespace *ns, -			int cap, int audit); +	int (*capable)(const struct cred *cred, +			struct user_namespace *ns, +			int cap, +			unsigned int opts);  	int (*quotactl)(int cmds, int type, int id, struct super_block *sb);  	int (*quota_on)(struct dentry *dentry);  	int (*syslog)(int type); @@ -1764,8 +1765,7 @@ union security_list_options {  	int (*audit_rule_init)(u32 field, u32 op, char *rulestr,  				void **lsmrule);  	int (*audit_rule_known)(struct audit_krule *krule); -	int (*audit_rule_match)(u32 secid, u32 field, u32 op, void *lsmrule, -				struct audit_context *actx); +	int (*audit_rule_match)(u32 secid, u32 field, u32 op, void *lsmrule);  	void (*audit_rule_free)(void *lsmrule);  #endif /* CONFIG_AUDIT */ @@ -2028,6 +2028,18 @@ struct security_hook_list {  } __randomize_layout;  /* + * Security blob size or offset data. + */ +struct lsm_blob_sizes { +	int	lbs_cred; +	int	lbs_file; +	int	lbs_inode; +	int	lbs_ipc; +	int	lbs_msg_msg; +	int	lbs_task; +}; + +/*   * Initializing a security_hook_list structure takes   * up a lot of space in a source file. This macro takes   * care of the common case and reduces the amount of @@ -2042,9 +2054,21 @@ extern char *lsm_names;  extern void security_add_hooks(struct security_hook_list *hooks, int count,  				char *lsm); +#define LSM_FLAG_LEGACY_MAJOR	BIT(0) +#define LSM_FLAG_EXCLUSIVE	BIT(1) + +enum lsm_order { +	LSM_ORDER_FIRST = -1,	/* This is only for capabilities. */ +	LSM_ORDER_MUTABLE = 0, +}; +  struct lsm_info {  	const char *name;	/* Required. */ +	enum lsm_order order;	/* Optional: default is LSM_ORDER_MUTABLE */ +	unsigned long flags;	/* Optional: flags describing LSM */ +	int *enabled;		/* Optional: controlled by CONFIG_LSM */  	int (*init)(void);	/* Required. */ +	struct lsm_blob_sizes *blobs; /* Optional: for blob sharing. */  };  extern struct lsm_info __start_lsm_info[], __end_lsm_info[]; @@ -2084,17 +2108,6 @@ static inline void security_delete_hooks(struct security_hook_list *hooks,  #define __lsm_ro_after_init	__ro_after_init  #endif /* CONFIG_SECURITY_WRITABLE_HOOKS */ -extern int __init security_module_enable(const char *module); -extern void __init capability_add_hooks(void); -#ifdef CONFIG_SECURITY_YAMA -extern void __init yama_add_hooks(void); -#else -static inline void __init yama_add_hooks(void) { } -#endif -#ifdef CONFIG_SECURITY_LOADPIN -void __init loadpin_add_hooks(void); -#else -static inline void loadpin_add_hooks(void) { }; -#endif +extern int lsm_inode_alloc(struct inode *inode);  #endif /* ! __LINUX_LSM_HOOKS_H */  |