hooks.c (1a37079c236d55fb31ebbf4b59945dab8ec8764c) | hooks.c (0188d5c025ca8fe756ba3193bd7d150139af5a88) |
---|---|
1// SPDX-License-Identifier: GPL-2.0-only 2/* 3 * NSA Security-Enhanced Linux (SELinux) security module 4 * 5 * This file contains the SELinux hook function implementations. 6 * 7 * Authors: Stephen Smalley, <sds@tycho.nsa.gov> 8 * Chris Vance, <cvance@nai.com> --- 2997 unchanged lines hidden (view full) --- 3006 3007 return avc_has_perm_flags(&selinux_state, 3008 sid, isec->sid, isec->sclass, FILE__READ, &ad, 3009 rcu ? MAY_NOT_BLOCK : 0); 3010} 3011 3012static noinline int audit_inode_permission(struct inode *inode, 3013 u32 perms, u32 audited, u32 denied, | 1// SPDX-License-Identifier: GPL-2.0-only 2/* 3 * NSA Security-Enhanced Linux (SELinux) security module 4 * 5 * This file contains the SELinux hook function implementations. 6 * 7 * Authors: Stephen Smalley, <sds@tycho.nsa.gov> 8 * Chris Vance, <cvance@nai.com> --- 2997 unchanged lines hidden (view full) --- 3006 3007 return avc_has_perm_flags(&selinux_state, 3008 sid, isec->sid, isec->sclass, FILE__READ, &ad, 3009 rcu ? MAY_NOT_BLOCK : 0); 3010} 3011 3012static noinline int audit_inode_permission(struct inode *inode, 3013 u32 perms, u32 audited, u32 denied, |
3014 int result, 3015 unsigned flags) | 3014 int result) |
3016{ 3017 struct common_audit_data ad; 3018 struct inode_security_struct *isec = selinux_inode(inode); 3019 int rc; 3020 3021 ad.type = LSM_AUDIT_DATA_INODE; 3022 ad.u.inode = inode; 3023 3024 rc = slow_avc_audit(&selinux_state, 3025 current_sid(), isec->sid, isec->sclass, perms, | 3015{ 3016 struct common_audit_data ad; 3017 struct inode_security_struct *isec = selinux_inode(inode); 3018 int rc; 3019 3020 ad.type = LSM_AUDIT_DATA_INODE; 3021 ad.u.inode = inode; 3022 3023 rc = slow_avc_audit(&selinux_state, 3024 current_sid(), isec->sid, isec->sclass, perms, |
3026 audited, denied, result, &ad, flags); | 3025 audited, denied, result, &ad); |
3027 if (rc) 3028 return rc; 3029 return 0; 3030} 3031 3032static int selinux_inode_permission(struct inode *inode, int mask) 3033{ 3034 const struct cred *cred = current_cred(); --- 30 unchanged lines hidden (view full) --- 3065 (flags & MAY_NOT_BLOCK) ? AVC_NONBLOCKING : 0, 3066 &avd); 3067 audited = avc_audit_required(perms, &avd, rc, 3068 from_access ? FILE__AUDIT_ACCESS : 0, 3069 &denied); 3070 if (likely(!audited)) 3071 return rc; 3072 | 3026 if (rc) 3027 return rc; 3028 return 0; 3029} 3030 3031static int selinux_inode_permission(struct inode *inode, int mask) 3032{ 3033 const struct cred *cred = current_cred(); --- 30 unchanged lines hidden (view full) --- 3064 (flags & MAY_NOT_BLOCK) ? AVC_NONBLOCKING : 0, 3065 &avd); 3066 audited = avc_audit_required(perms, &avd, rc, 3067 from_access ? FILE__AUDIT_ACCESS : 0, 3068 &denied); 3069 if (likely(!audited)) 3070 return rc; 3071 |
3073 rc2 = audit_inode_permission(inode, perms, audited, denied, rc, flags); | 3072 /* fall back to ref-walk if we have to generate audit */ 3073 if (flags & MAY_NOT_BLOCK) 3074 return -ECHILD; 3075 3076 rc2 = audit_inode_permission(inode, perms, audited, denied, rc); |
3074 if (rc2) 3075 return rc2; 3076 return rc; 3077} 3078 3079static int selinux_inode_setattr(struct dentry *dentry, struct iattr *iattr) 3080{ 3081 const struct cred *cred = current_cred(); --- 4253 unchanged lines hidden --- | 3077 if (rc2) 3078 return rc2; 3079 return rc; 3080} 3081 3082static int selinux_inode_setattr(struct dentry *dentry, struct iattr *iattr) 3083{ 3084 const struct cred *cred = current_cred(); --- 4253 unchanged lines hidden --- |