diff mbox series

[1/1] selinux: simplify avc_xperms_audit_required()

Message ID 20240822140858.1998-1-thunder.leizhen@huawei.com (mailing list archive)
State Accepted
Delegated to: Paul Moore
Headers show
Series [1/1] selinux: simplify avc_xperms_audit_required() | expand

Commit Message

Leizhen (ThunderTown) Aug. 22, 2024, 2:08 p.m. UTC
By associative and commutative laws, the result of the two 'audited' is
zero. Take the second 'audited' as an example:
  1) audited = requested & avd->auditallow;
  2) audited &= ~requested;
  ==> audited = ~requested & (requested & avd->auditallow);
  ==> audited = (~requested & requested) & avd->auditallow;
  ==> audited = 0 & avd->auditallow;
  ==> audited = 0;

In fact, it is more readable to directly write zero. The value of the
first 'audited' is 0 because AUDIT is not allowed. The second 'audited'
is zero because there is no AUDITALLOW permission.

Signed-off-by: Zhen Lei <thunder.leizhen@huawei.com>
---
 security/selinux/avc.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Comments

Paul Moore Aug. 28, 2024, 5:42 p.m. UTC | #1
On Aug 22, 2024 Zhen Lei <thunder.leizhen@huawei.com> wrote:
> 
> By associative and commutative laws, the result of the two 'audited' is
> zero. Take the second 'audited' as an example:
>   1) audited = requested & avd->auditallow;
>   2) audited &= ~requested;
>   ==> audited = ~requested & (requested & avd->auditallow);
>   ==> audited = (~requested & requested) & avd->auditallow;
>   ==> audited = 0 & avd->auditallow;
>   ==> audited = 0;
> 
> In fact, it is more readable to directly write zero. The value of the
> first 'audited' is 0 because AUDIT is not allowed. The second 'audited'
> is zero because there is no AUDITALLOW permission.
> 
> Signed-off-by: Zhen Lei <thunder.leizhen@huawei.com>
> ---
>  security/selinux/avc.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)

Looks good to me, merged into selinux/dev, thanks!

--
paul-moore.com
diff mbox series

Patch

diff --git a/security/selinux/avc.c b/security/selinux/avc.c
index b49c44869dc4627..21f5bbba50caaeb 100644
--- a/security/selinux/avc.c
+++ b/security/selinux/avc.c
@@ -396,7 +396,7 @@  static inline u32 avc_xperms_audit_required(u32 requested,
 		audited = denied & avd->auditdeny;
 		if (audited && xpd) {
 			if (avc_xperms_has_perm(xpd, perm, XPERMS_DONTAUDIT))
-				audited &= ~requested;
+				audited = 0;
 		}
 	} else if (result) {
 		audited = denied = requested;
@@ -404,7 +404,7 @@  static inline u32 avc_xperms_audit_required(u32 requested,
 		audited = requested & avd->auditallow;
 		if (audited && xpd) {
 			if (!avc_xperms_has_perm(xpd, perm, XPERMS_AUDITALLOW))
-				audited &= ~requested;
+				audited = 0;
 		}
 	}