[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20250206084629.16602-6-kuniyu@amazon.com>
Date: Thu, 6 Feb 2025 17:46:28 +0900
From: Kuniyuki Iwashima <kuniyu@...zon.com>
To: "David S. Miller" <davem@...emloft.net>, Eric Dumazet
<edumazet@...gle.com>, Jakub Kicinski <kuba@...nel.org>, Paolo Abeni
<pabeni@...hat.com>, Simon Horman <horms@...nel.org>
CC: Kuniyuki Iwashima <kuniyu@...zon.com>, Kuniyuki Iwashima
<kuni1840@...il.com>, <netdev@...r.kernel.org>
Subject: [PATCH v1 net-next 5/6] fib: rules: Add error_free label in fib_nl_delrule().
We will hold RTNL just before calling fib_nl2rule_rtnl() in
fib_nl_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@...zon.com>
---
net/core/fib_rules.c | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)
diff --git a/net/core/fib_rules.c b/net/core/fib_rules.c
index 3cdfa3ac8c7c..cc26c762fa9e 100644
--- a/net/core/fib_rules.c
+++ b/net/core/fib_rules.c
@@ -942,23 +942,23 @@ int fib_nl_delrule(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)
@@ -1004,8 +1004,9 @@ int fib_nl_delrule(struct sk_buff *skb, struct nlmsghdr *nlh,
kfree(nlrule);
return 0;
-errout:
+errout_free:
kfree(nlrule);
+errout:
rules_ops_put(ops);
return err;
}
--
2.39.5 (Apple Git-154)
Powered by blists - more mailing lists