diff options
| author | John Johansen <john.johansen@canonical.com> | 2025-06-19 22:11:52 -0700 |
|---|---|---|
| committer | John Johansen <john.johansen@canonical.com> | 2025-07-20 02:19:27 -0700 |
| commit | 88fec3526e84123997ecebd6bb6778eb4ce779b7 (patch) | |
| tree | d2bc332367530918e0abd2d34aeacb02462c916b /security/apparmor/include | |
| parent | apparmor: fix regression in fs based unix sockets when using old abi (diff) | |
| download | linux-88fec3526e84123997ecebd6bb6778eb4ce779b7.tar.gz linux-88fec3526e84123997ecebd6bb6778eb4ce779b7.zip | |
apparmor: make sure unix socket labeling is correctly updated.
When a unix socket is passed into a different confinement domain make
sure its cached mediation labeling is updated to correctly reflect
which domains are using the socket.
Fixes: c05e705812d1 ("apparmor: add fine grained af_unix mediation")
Signed-off-by: John Johansen <john.johansen@canonical.com>
Diffstat (limited to 'security/apparmor/include')
| -rw-r--r-- | security/apparmor/include/label.h | 7 | ||||
| -rw-r--r-- | security/apparmor/include/net.h | 5 |
2 files changed, 10 insertions, 2 deletions
diff --git a/security/apparmor/include/label.h b/security/apparmor/include/label.h index 5e7d199c15e2..9aa2e364cca9 100644 --- a/security/apparmor/include/label.h +++ b/security/apparmor/include/label.h @@ -415,6 +415,13 @@ static inline void aa_put_label(struct aa_label *l) kref_put(&l->count, aa_label_kref); } +/* wrapper fn to indicate semantics of the check */ +static inline bool __aa_subj_label_is_cached(struct aa_label *subj_label, + struct aa_label *obj_label) +{ + return aa_label_is_subset(obj_label, subj_label); +} + struct aa_proxy *aa_alloc_proxy(struct aa_label *l, gfp_t gfp); void aa_proxy_kref(struct kref *kref); diff --git a/security/apparmor/include/net.h b/security/apparmor/include/net.h index 5089e937d550..0d0b0ce42723 100644 --- a/security/apparmor/include/net.h +++ b/security/apparmor/include/net.h @@ -47,8 +47,9 @@ #define NET_PEER_MASK (AA_MAY_SEND | AA_MAY_RECEIVE | AA_MAY_CONNECT | \ AA_MAY_ACCEPT) struct aa_sk_ctx { - struct aa_label *label; - struct aa_label *peer; + struct aa_label __rcu *label; + struct aa_label __rcu *peer; + struct aa_label __rcu *peer_lastupdate; /* ptr cmp only, no deref */ }; static inline struct aa_sk_ctx *aa_sock(const struct sock *sk) |
