]> www.infradead.org Git - users/hch/configfs.git/commitdiff
landlock: Refactor network access mask management
authorMickaël Salaün <mic@digikod.net>
Sat, 9 Nov 2024 11:08:55 +0000 (12:08 +0100)
committerMickaël Salaün <mic@digikod.net>
Sat, 9 Nov 2024 18:52:13 +0000 (19:52 +0100)
Replace get_raw_handled_net_accesses() and get_current_net_domain() with
a call to landlock_get_applicable_domain().

Cc: Konstantin Meskhidze <konstantin.meskhidze@huawei.com>
Cc: Mikhail Ivanov <ivanov.mikhail1@huawei-partners.com>
Reviewed-by: Günther Noack <gnoack@google.com>
Link: https://lore.kernel.org/r/20241109110856.222842-3-mic@digikod.net
Signed-off-by: Mickaël Salaün <mic@digikod.net>
security/landlock/net.c

index c8bcd29bde0955187b45874ddcbcd4b83afd341a..d5dcc4407a197b88d0478b9e6e102d6833bfd8f9 100644 (file)
@@ -39,27 +39,9 @@ int landlock_append_net_rule(struct landlock_ruleset *const ruleset,
        return err;
 }
 
-static access_mask_t
-get_raw_handled_net_accesses(const struct landlock_ruleset *const domain)
-{
-       access_mask_t access_dom = 0;
-       size_t layer_level;
-
-       for (layer_level = 0; layer_level < domain->num_layers; layer_level++)
-               access_dom |= landlock_get_net_access_mask(domain, layer_level);
-       return access_dom;
-}
-
-static const struct landlock_ruleset *get_current_net_domain(void)
-{
-       const struct landlock_ruleset *const dom =
-               landlock_get_current_domain();
-
-       if (!dom || !get_raw_handled_net_accesses(dom))
-               return NULL;
-
-       return dom;
-}
+static const struct access_masks any_net = {
+       .net = ~0,
+};
 
 static int current_check_access_socket(struct socket *const sock,
                                       struct sockaddr *const address,
@@ -72,7 +54,9 @@ static int current_check_access_socket(struct socket *const sock,
        struct landlock_id id = {
                .type = LANDLOCK_KEY_NET_PORT,
        };
-       const struct landlock_ruleset *const dom = get_current_net_domain();
+       const struct landlock_ruleset *const dom =
+               landlock_get_applicable_domain(landlock_get_current_domain(),
+                                              any_net);
 
        if (!dom)
                return 0;