/* Check permission between a pair of tasks, e.g. signal checks, fork check, ptrace check, etc. tsk1 is the actor and tsk2 is the target */
static int task_has_perm(const struct task_struct *tsk1, const struct task_struct *tsk2, u32 perms)
/* Check permission between a pair of tasks, e.g. signal checks, fork check, ptrace check, etc. tsk1 is the actor and tsk2 is the target */
static int task_has_perm(const struct task_struct *tsk1, const struct task_struct *tsk2, u32 perms)
{
	const struct task_security_struct *__tsec1, *__tsec2;
	u32 sid1, sid2;
	rcu_read_lock();
	__tsec1 = __task_cred(tsk1)->security;	sid1 = __tsec1->sid;
	__tsec2 = __task_cred(tsk2)->security;	sid2 = __tsec2->sid;
	rcu_read_unlock();
	return avc_has_perm(sid1, sid2, SECCLASS_PROCESS, perms, NULL);
}