diff options
author | Mickaël Salaün <mic@digikod.net> | 2025-01-13 17:11:10 +0100 |
---|---|---|
committer | Mickaël Salaün <mic@digikod.net> | 2025-01-14 11:57:45 +0100 |
commit | 16a6f4d3b558bd55b52892f2becad8f33cb62ed2 (patch) | |
tree | 447f0e347c1ee14043774983204f5559dc29fb97 /security | |
parent | d32f79a59ae1a90f27735c75f9920c585e6ceb8f (diff) | |
download | linux-16a6f4d3b558bd55b52892f2becad8f33cb62ed2.tar.gz linux-16a6f4d3b558bd55b52892f2becad8f33cb62ed2.tar.bz2 linux-16a6f4d3b558bd55b52892f2becad8f33cb62ed2.zip |
landlock: Use scoped guards for ruleset in landlock_add_rule()
Simplify error handling by replacing goto statements with automatic
calls to landlock_put_ruleset() when going out of scope.
This change depends on the TCP support.
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/20250113161112.452505-3-mic@digikod.net
Signed-off-by: Mickaël Salaün <mic@digikod.net>
Diffstat (limited to 'security')
-rw-r--r-- | security/landlock/syscalls.c | 14 |
1 files changed, 4 insertions, 10 deletions
diff --git a/security/landlock/syscalls.c b/security/landlock/syscalls.c index 5a7f1f77292e..a9760d252fc2 100644 --- a/security/landlock/syscalls.c +++ b/security/landlock/syscalls.c @@ -399,8 +399,7 @@ SYSCALL_DEFINE4(landlock_add_rule, const int, ruleset_fd, const enum landlock_rule_type, rule_type, const void __user *const, rule_attr, const __u32, flags) { - struct landlock_ruleset *ruleset; - int err; + struct landlock_ruleset *ruleset __free(landlock_put_ruleset) = NULL; if (!is_initialized()) return -EOPNOTSUPP; @@ -416,17 +415,12 @@ SYSCALL_DEFINE4(landlock_add_rule, const int, ruleset_fd, switch (rule_type) { case LANDLOCK_RULE_PATH_BENEATH: - err = add_rule_path_beneath(ruleset, rule_attr); - break; + return add_rule_path_beneath(ruleset, rule_attr); case LANDLOCK_RULE_NET_PORT: - err = add_rule_net_port(ruleset, rule_attr); - break; + return add_rule_net_port(ruleset, rule_attr); default: - err = -EINVAL; - break; + return -EINVAL; } - landlock_put_ruleset(ruleset); - return err; } /* Enforcement */ |