]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
net: fib_rules: Add error_free label in fib_delrule().
authorKuniyuki Iwashima <kuniyu@amazon.com>
Fri, 7 Feb 2025 07:25:01 +0000 (16:25 +0900)
committerJakub Kicinski <kuba@kernel.org>
Tue, 11 Feb 2025 03:08:52 +0000 (19:08 -0800)
We will hold RTNL just before calling fib_nl2rule_rtnl() in
fib_delrule() and release it before kfree(nlrule).

Let's add a new rule to make the following change cleaner.

Signed-off-by: Kuniyuki Iwashima <kuniyu@amazon.com>
Reviewed-by: Eric Dumazet <edumazet@google.com>
Reviewed-by: Ido Schimmel <idosch@nvidia.com>
Tested-by: Ido Schimmel <idosch@nvidia.com>
Link: https://patch.msgid.link/20250207072502.87775-8-kuniyu@amazon.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/core/fib_rules.c

index d0995ea9d85238181f3c641a6f01598690cb18f9..10a7336b8d44f165df226bebb3ce2d03d9354deb 100644 (file)
@@ -946,23 +946,23 @@ int fib_delrule(struct net *net, struct sk_buff *skb, struct nlmsghdr *nlh,
 
        err = fib_nl2rule_rtnl(nlrule, ops, tb, extack);
        if (err)
-               goto errout;
+               goto errout_free;
 
        rule = rule_find(ops, frh, tb, nlrule, user_priority);
        if (!rule) {
                err = -ENOENT;
-               goto errout;
+               goto errout_free;
        }
 
        if (rule->flags & FIB_RULE_PERMANENT) {
                err = -EPERM;
-               goto errout;
+               goto errout_free;
        }
 
        if (ops->delete) {
                err = ops->delete(rule);
                if (err)
-                       goto errout;
+                       goto errout_free;
        }
 
        if (rule->tun_id)
@@ -1008,8 +1008,9 @@ int fib_delrule(struct net *net, struct sk_buff *skb, struct nlmsghdr *nlh,
        kfree(nlrule);
        return 0;
 
-errout:
+errout_free:
        kfree(nlrule);
+errout:
        rules_ops_put(ops);
        return err;
 }