summaryrefslogtreecommitdiff
path: root/security
diff options
context:
space:
mode:
authorChristian Göttsche <cgzones@googlemail.com>2026-09-17 16:13:16 +0200
committerPaul Moore <paul@paul-moore.com>2026-09-24 17:04:38 -0400
commite6b4f0bac981dcb5c1fd682be0d7a8d69892f5e1 (patch)
tree8394a8078e4ff07127088c1d2a4b2f1195435025 /security
parentb4e7b9a70de3cb6261be55d5771fe209f7394eeb (diff)
selinux: constify avc function parameters
Constify read-only decision structs to ease reasoning where decisions are actually modified, and where only processed. Signed-off-by: Christian Göttsche <cgzones@googlemail.com> Acked-by: Stephen Smalley <stephen.smalley.work@gmail.com> [PM: fixed line length issues] Signed-off-by: Paul Moore <paul@paul-moore.com>
Diffstat (limited to 'security')
-rw-r--r--security/selinux/avc.c34
-rw-r--r--security/selinux/include/avc.h7
2 files changed, 22 insertions, 19 deletions
diff --git a/security/selinux/avc.c b/security/selinux/avc.c
index a9401d6c2e5f..d8c9dd6411d7 100644
--- a/security/selinux/avc.c
+++ b/security/selinux/avc.c
@@ -190,8 +190,8 @@ avc_xperms_decision_lookup(u8 driver, u8 base_perm,
}
static inline unsigned int
-avc_xperms_has_perm(struct extended_perms_decision *xpd,
- u8 perm, u8 which)
+avc_xperms_has_perm(const struct extended_perms_decision *xpd,
+ u8 perm, u8 which)
{
unsigned int rc = 0;
@@ -247,7 +247,7 @@ static void avc_xperms_free(struct avc_xperms_node *xp_node)
}
static void avc_copy_xperms_decision(struct extended_perms_decision *dest,
- struct extended_perms_decision *src)
+ const struct extended_perms_decision *src)
{
dest->base_perm = src->base_perm;
dest->driver = src->driver;
@@ -269,7 +269,7 @@ static void avc_copy_xperms_decision(struct extended_perms_decision *dest,
*/
static inline void avc_quick_copy_xperms_decision(u8 perm,
struct extended_perms_decision *dest,
- struct extended_perms_decision *src)
+ const struct extended_perms_decision *src)
{
/*
* compute index of the u32 of the 256 bits (8 u32s) that contain this
@@ -323,7 +323,7 @@ error:
}
static int avc_add_xperms_decision(struct avc_node *node,
- struct extended_perms_decision *src)
+ const struct extended_perms_decision *src)
{
struct avc_xperms_decision_node *dest_xpd;
@@ -348,7 +348,7 @@ static struct avc_xperms_node *avc_xperms_alloc(void)
}
static int avc_xperms_populate(struct avc_node *node,
- struct avc_xperms_node *src)
+ const struct avc_xperms_node *src)
{
struct avc_xperms_node *dest;
struct avc_xperms_decision_node *dest_xpd;
@@ -381,11 +381,11 @@ error:
}
static inline u32 avc_xperms_audit_required(u32 requested,
- struct av_decision *avd,
- struct extended_perms_decision *xpd,
- u8 perm,
- int result,
- u32 *deniedp)
+ const struct av_decision *avd,
+ const struct extended_perms_decision *xpd,
+ u8 perm,
+ int result,
+ u32 *deniedp)
{
u32 denied, audited;
@@ -411,8 +411,8 @@ static inline u32 avc_xperms_audit_required(u32 requested,
}
static inline int avc_xperms_audit(u32 ssid, u32 tsid, u16 tclass,
- u32 requested, struct av_decision *avd,
- struct extended_perms_decision *xpd,
+ u32 requested, const struct av_decision *avd,
+ const struct extended_perms_decision *xpd,
u8 perm, int result,
struct common_audit_data *ad)
{
@@ -509,7 +509,8 @@ static struct avc_node *avc_alloc_node(void)
return node;
}
-static void avc_node_populate(struct avc_node *node, u32 ssid, u32 tsid, u16 tclass, struct av_decision *avd)
+static void avc_node_populate(struct avc_node *node, u32 ssid, u32 tsid,
+ u16 tclass, const struct av_decision *avd)
{
node->ae.ssid = ssid;
node->ae.tsid = tsid;
@@ -603,7 +604,8 @@ static int avc_latest_notif_update(u32 seqno, int is_insert)
* the access vectors into a cache entry.
*/
static void avc_insert(u32 ssid, u32 tsid, u16 tclass,
- struct av_decision *avd, struct avc_xperms_node *xp_node)
+ const struct av_decision *avd,
+ const struct avc_xperms_node *xp_node)
{
struct avc_node *pos, *node = NULL;
u32 hvalue;
@@ -828,7 +830,7 @@ out:
*/
static int avc_update_node(u32 event, u32 perms, u8 driver, u8 base_perm,
u8 xperm, u32 ssid, u32 tsid, u16 tclass, u32 seqno,
- struct extended_perms_decision *xpd, u32 flags)
+ const struct extended_perms_decision *xpd, u32 flags)
{
u32 hvalue;
int rc = 0;
diff --git a/security/selinux/include/avc.h b/security/selinux/include/avc.h
index 01b5167fee1a..87027a934a11 100644
--- a/security/selinux/include/avc.h
+++ b/security/selinux/include/avc.h
@@ -61,8 +61,9 @@ struct selinux_audit_data {
void __init avc_init(void);
-static inline u32 avc_audit_required(u32 requested, struct av_decision *avd,
- int result, u32 auditdeny, u32 *deniedp)
+static inline u32 avc_audit_required(u32 requested,
+ const struct av_decision *avd, int result,
+ u32 auditdeny, u32 *deniedp)
{
u32 denied, audited;
@@ -121,7 +122,7 @@ int slow_avc_audit(u32 ssid, u32 tsid, u16 tclass, u32 requested, u32 audited,
* before calling the auditing code.
*/
static inline int avc_audit(u32 ssid, u32 tsid, u16 tclass, u32 requested,
- struct av_decision *avd, int result,
+ const struct av_decision *avd, int result,
struct common_audit_data *a)
{
u32 audited, denied;