@@ -698,6 +698,11 @@
* security attributes, e.g. for /proc/pid inodes.
* @p contains the task_struct for the task.
* @inode contains the inode structure for the inode.
+ * @task_safe_sidechannel:
+ * Check if a side channel attack is harmless for the current task and @p.
+ * The caller may have determined that no attack is possible, in which
+ * case this hook won't get called.
+ * @p contains the task_struct for the task.
*
* Security hooks for Netlink messaging.
*
@@ -1611,6 +1616,7 @@ union security_list_options {
int (*task_prctl)(int option, unsigned long arg2, unsigned long arg3,
unsigned long arg4, unsigned long arg5);
void (*task_to_inode)(struct task_struct *p, struct inode *inode);
+ int (*task_safe_sidechannel)(struct task_struct *p);
int (*ipc_permission)(struct kern_ipc_perm *ipcp, short flag);
void (*ipc_getsecid)(struct kern_ipc_perm *ipcp, u32 *secid);
@@ -1897,6 +1903,7 @@ struct security_hook_heads {
struct hlist_head task_kill;
struct hlist_head task_prctl;
struct hlist_head task_to_inode;
+ struct hlist_head task_safe_sidechannel;
struct hlist_head ipc_permission;
struct hlist_head ipc_getsecid;
struct hlist_head msg_msg_alloc_security;
@@ -366,6 +366,7 @@ int security_task_kill(struct task_struct *p, struct siginfo *info,
int security_task_prctl(int option, unsigned long arg2, unsigned long arg3,
unsigned long arg4, unsigned long arg5);
void security_task_to_inode(struct task_struct *p, struct inode *inode);
+int security_task_safe_sidechannel(struct task_struct *p);
int security_ipc_permission(struct kern_ipc_perm *ipcp, short flag);
void security_ipc_getsecid(struct kern_ipc_perm *ipcp, u32 *secid);
int security_msg_msg_alloc(struct msg_msg *msg);
@@ -1165,6 +1165,11 @@ void security_task_to_inode(struct task_struct *p, struct inode *inode)
call_void_hook(task_to_inode, p, inode);
}
+int security_task_safe_sidechannel(struct task_struct *p)
+{
+ return call_int_hook(task_safe_sidechannel, 0, p);
+}
+
int security_ipc_permission(struct kern_ipc_perm *ipcp, short flag)
{
return call_int_hook(ipc_permission, 0, ipcp, flag);