/* NOTE WELL: cap_has_capability() cannot be used like the kernel's capable() and has_capability() functions. That is, it has the reverse semantics: cap_has_capability() returns 0 when a task has a capability, but the kernel's capable() and has_capability() returns 1 for this case.  */
int cap_capable(struct task_struct *tsk, const struct cred *cred, int cap, int audit)
/* NOTE WELL: cap_has_capability() cannot be used like the kernel's capable() and has_capability() functions. That is, it has the reverse semantics: cap_has_capability() returns 0 when a task has a capability, but the kernel's capable() and has_capability() returns 1 for this case.  */
int cap_capable(struct task_struct *tsk, const struct cred *cred, int cap, int audit)
{
	return cap_raised(cred->cap_effective, cap) ? 0 : -EPERM;
}