diff options
Diffstat (limited to 'include/linux/security.h')
| -rw-r--r-- | include/linux/security.h | 59 | 
1 files changed, 46 insertions, 13 deletions
| diff --git a/include/linux/security.h b/include/linux/security.h index 0f6afc657f77..eee7478cda70 100644 --- a/include/linux/security.h +++ b/include/linux/security.h @@ -989,17 +989,29 @@ static inline void security_free_mnt_opts(struct security_mnt_opts *opts)   *	tells the LSM to decrement the number of secmark labeling rules loaded   * @req_classify_flow:   *	Sets the flow's sid to the openreq sid. + * @tun_dev_alloc_security: + *	This hook allows a module to allocate a security structure for a TUN + *	device. + *	@security pointer to a security structure pointer. + *	Returns a zero on success, negative values on failure. + * @tun_dev_free_security: + *	This hook allows a module to free the security structure for a TUN + *	device. + *	@security pointer to the TUN device's security structure   * @tun_dev_create:   *	Check permissions prior to creating a new TUN device. - * @tun_dev_post_create: - *	This hook allows a module to update or allocate a per-socket security - *	structure. - *	@sk contains the newly created sock structure. + * @tun_dev_attach_queue: + *	Check permissions prior to attaching to a TUN device queue. + *	@security pointer to the TUN device's security structure.   * @tun_dev_attach: - *	Check permissions prior to attaching to a persistent TUN device.  This - *	hook can also be used by the module to update any security state + *	This hook can be used by the module to update any security state   *	associated with the TUN device's sock structure.   *	@sk contains the existing sock structure. + *	@security pointer to the TUN device's security structure. + * @tun_dev_open: + *	This hook can be used by the module to update any security state + *	associated with the TUN device's security structure. + *	@security pointer to the TUN devices's security structure.   *   * Security hooks for XFRM operations.   * @@ -1620,9 +1632,12 @@ struct security_operations {  	void (*secmark_refcount_inc) (void);  	void (*secmark_refcount_dec) (void);  	void (*req_classify_flow) (const struct request_sock *req, struct flowi *fl); -	int (*tun_dev_create)(void); -	void (*tun_dev_post_create)(struct sock *sk); -	int (*tun_dev_attach)(struct sock *sk); +	int (*tun_dev_alloc_security) (void **security); +	void (*tun_dev_free_security) (void *security); +	int (*tun_dev_create) (void); +	int (*tun_dev_attach_queue) (void *security); +	int (*tun_dev_attach) (struct sock *sk, void *security); +	int (*tun_dev_open) (void *security);  #endif	/* CONFIG_SECURITY_NETWORK */  #ifdef CONFIG_SECURITY_NETWORK_XFRM @@ -2566,9 +2581,12 @@ void security_inet_conn_established(struct sock *sk,  int security_secmark_relabel_packet(u32 secid);  void security_secmark_refcount_inc(void);  void security_secmark_refcount_dec(void); +int security_tun_dev_alloc_security(void **security); +void security_tun_dev_free_security(void *security);  int security_tun_dev_create(void); -void security_tun_dev_post_create(struct sock *sk); -int security_tun_dev_attach(struct sock *sk); +int security_tun_dev_attach_queue(void *security); +int security_tun_dev_attach(struct sock *sk, void *security); +int security_tun_dev_open(void *security);  #else	/* CONFIG_SECURITY_NETWORK */  static inline int security_unix_stream_connect(struct sock *sock, @@ -2733,16 +2751,31 @@ static inline void security_secmark_refcount_dec(void)  {  } +static inline int security_tun_dev_alloc_security(void **security) +{ +	return 0; +} + +static inline void security_tun_dev_free_security(void *security) +{ +} +  static inline int security_tun_dev_create(void)  {  	return 0;  } -static inline void security_tun_dev_post_create(struct sock *sk) +static inline int security_tun_dev_attach_queue(void *security) +{ +	return 0; +} + +static inline int security_tun_dev_attach(struct sock *sk, void *security)  { +	return 0;  } -static inline int security_tun_dev_attach(struct sock *sk) +static inline int security_tun_dev_open(void *security)  {  	return 0;  } |