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, |