Skip to content

Commit 16a6f4d

Browse files
committed
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 <[email protected]> Cc: Mikhail Ivanov <[email protected]> Reviewed-by: Günther Noack <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Mickaël Salaün <[email protected]>
1 parent d32f79a commit 16a6f4d

File tree

1 file changed

+4
-10
lines changed

1 file changed

+4
-10
lines changed

security/landlock/syscalls.c

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -399,8 +399,7 @@ SYSCALL_DEFINE4(landlock_add_rule, const int, ruleset_fd,
399399
const enum landlock_rule_type, rule_type,
400400
const void __user *const, rule_attr, const __u32, flags)
401401
{
402-
struct landlock_ruleset *ruleset;
403-
int err;
402+
struct landlock_ruleset *ruleset __free(landlock_put_ruleset) = NULL;
404403

405404
if (!is_initialized())
406405
return -EOPNOTSUPP;
@@ -416,17 +415,12 @@ SYSCALL_DEFINE4(landlock_add_rule, const int, ruleset_fd,
416415

417416
switch (rule_type) {
418417
case LANDLOCK_RULE_PATH_BENEATH:
419-
err = add_rule_path_beneath(ruleset, rule_attr);
420-
break;
418+
return add_rule_path_beneath(ruleset, rule_attr);
421419
case LANDLOCK_RULE_NET_PORT:
422-
err = add_rule_net_port(ruleset, rule_attr);
423-
break;
420+
return add_rule_net_port(ruleset, rule_attr);
424421
default:
425-
err = -EINVAL;
426-
break;
422+
return -EINVAL;
427423
}
428-
landlock_put_ruleset(ruleset);
429-
return err;
430424
}
431425

432426
/* Enforcement */

0 commit comments

Comments
 (0)