diff options
| -rw-r--r-- | security/selinux/avc.c | 24 | ||||
| -rw-r--r-- | security/selinux/hooks.c | 5 | ||||
| -rw-r--r-- | security/selinux/include/avc.h | 5 |
3 files changed, 4 insertions, 30 deletions
diff --git a/security/selinux/avc.c b/security/selinux/avc.c index 5de18a6d5c3f..9b63d8ee1687 100644 --- a/security/selinux/avc.c +++ b/security/selinux/avc.c | |||
| @@ -867,9 +867,8 @@ static int avc_update_node(struct selinux_avc *avc, | |||
| 867 | * permissive mode that only appear when in enforcing mode. | 867 | * permissive mode that only appear when in enforcing mode. |
| 868 | * | 868 | * |
| 869 | * See the corresponding handling in slow_avc_audit(), and the | 869 | * See the corresponding handling in slow_avc_audit(), and the |
| 870 | * logic in selinux_inode_follow_link and selinux_inode_permission | 870 | * logic in selinux_inode_permission for the MAY_NOT_BLOCK flag, |
| 871 | * for the VFS MAY_NOT_BLOCK flag, which is transliterated into | 871 | * which is transliterated into AVC_NONBLOCKING. |
| 872 | * AVC_NONBLOCKING for avc_has_perm_noaudit(). | ||
| 873 | */ | 872 | */ |
| 874 | if (flags & AVC_NONBLOCKING) | 873 | if (flags & AVC_NONBLOCKING) |
| 875 | return 0; | 874 | return 0; |
| @@ -1209,25 +1208,6 @@ int avc_has_perm(struct selinux_state *state, u32 ssid, u32 tsid, u16 tclass, | |||
| 1209 | return rc; | 1208 | return rc; |
| 1210 | } | 1209 | } |
| 1211 | 1210 | ||
| 1212 | int avc_has_perm_flags(struct selinux_state *state, | ||
| 1213 | u32 ssid, u32 tsid, u16 tclass, u32 requested, | ||
| 1214 | struct common_audit_data *auditdata, | ||
| 1215 | int flags) | ||
| 1216 | { | ||
| 1217 | struct av_decision avd; | ||
| 1218 | int rc, rc2; | ||
| 1219 | |||
| 1220 | rc = avc_has_perm_noaudit(state, ssid, tsid, tclass, requested, | ||
| 1221 | (flags & MAY_NOT_BLOCK) ? AVC_NONBLOCKING : 0, | ||
| 1222 | &avd); | ||
| 1223 | |||
| 1224 | rc2 = avc_audit(state, ssid, tsid, tclass, requested, &avd, rc, | ||
| 1225 | auditdata, flags); | ||
| 1226 | if (rc2) | ||
| 1227 | return rc2; | ||
| 1228 | return rc; | ||
| 1229 | } | ||
| 1230 | |||
| 1231 | u32 avc_policy_seqno(struct selinux_state *state) | 1211 | u32 avc_policy_seqno(struct selinux_state *state) |
| 1232 | { | 1212 | { |
| 1233 | return state->avc->avc_cache.latest_notif; | 1213 | return state->avc->avc_cache.latest_notif; |
diff --git a/security/selinux/hooks.c b/security/selinux/hooks.c index 7f6068489a02..f08a0f201967 100644 --- a/security/selinux/hooks.c +++ b/security/selinux/hooks.c | |||
| @@ -2925,9 +2925,8 @@ static int selinux_inode_follow_link(struct dentry *dentry, struct inode *inode, | |||
| 2925 | if (IS_ERR(isec)) | 2925 | if (IS_ERR(isec)) |
| 2926 | return PTR_ERR(isec); | 2926 | return PTR_ERR(isec); |
| 2927 | 2927 | ||
| 2928 | return avc_has_perm_flags(&selinux_state, | 2928 | return avc_has_perm(&selinux_state, |
| 2929 | sid, isec->sid, isec->sclass, FILE__READ, &ad, | 2929 | sid, isec->sid, isec->sclass, FILE__READ, &ad); |
| 2930 | rcu ? MAY_NOT_BLOCK : 0); | ||
| 2931 | } | 2930 | } |
| 2932 | 2931 | ||
| 2933 | static noinline int audit_inode_permission(struct inode *inode, | 2932 | static noinline int audit_inode_permission(struct inode *inode, |
diff --git a/security/selinux/include/avc.h b/security/selinux/include/avc.h index 74ea50977c20..7be0e1e90e8b 100644 --- a/security/selinux/include/avc.h +++ b/security/selinux/include/avc.h | |||
| @@ -153,11 +153,6 @@ int avc_has_perm(struct selinux_state *state, | |||
| 153 | u32 ssid, u32 tsid, | 153 | u32 ssid, u32 tsid, |
| 154 | u16 tclass, u32 requested, | 154 | u16 tclass, u32 requested, |
| 155 | struct common_audit_data *auditdata); | 155 | struct common_audit_data *auditdata); |
| 156 | int avc_has_perm_flags(struct selinux_state *state, | ||
| 157 | u32 ssid, u32 tsid, | ||
| 158 | u16 tclass, u32 requested, | ||
| 159 | struct common_audit_data *auditdata, | ||
| 160 | int flags); | ||
| 161 | 156 | ||
| 162 | int avc_has_extended_perms(struct selinux_state *state, | 157 | int avc_has_extended_perms(struct selinux_state *state, |
| 163 | u32 ssid, u32 tsid, u16 tclass, u32 requested, | 158 | u32 ssid, u32 tsid, u16 tclass, u32 requested, |
