diff options
Diffstat (limited to 'security/security.c')
| -rw-r--r-- | security/security.c | 26 | 
1 files changed, 22 insertions, 4 deletions
diff --git a/security/security.c b/security/security.c index 678d4d07b85..c3586c0d97e 100644 --- a/security/security.c +++ b/security/security.c @@ -154,14 +154,32 @@ int security_capset(struct cred *new, const struct cred *old,  				    effective, inheritable, permitted);  } -int security_capable(struct task_struct *tsk, int cap) +int security_capable(int cap)  { -	return security_ops->capable(tsk, cap, SECURITY_CAP_AUDIT); +	return security_ops->capable(current, current_cred(), cap, +				     SECURITY_CAP_AUDIT);  } -int security_capable_noaudit(struct task_struct *tsk, int cap) +int security_real_capable(struct task_struct *tsk, int cap)  { -	return security_ops->capable(tsk, cap, SECURITY_CAP_NOAUDIT); +	const struct cred *cred; +	int ret; + +	cred = get_task_cred(tsk); +	ret = security_ops->capable(tsk, cred, cap, SECURITY_CAP_AUDIT); +	put_cred(cred); +	return ret; +} + +int security_real_capable_noaudit(struct task_struct *tsk, int cap) +{ +	const struct cred *cred; +	int ret; + +	cred = get_task_cred(tsk); +	ret = security_ops->capable(tsk, cred, cap, SECURITY_CAP_NOAUDIT); +	put_cred(cred); +	return ret;  }  int security_acct(struct file *file)  |