mirror of
https://github.com/torvalds/linux.git
synced 2026-05-26 08:02:27 +02:00
nexthop: Check NLM_F_REPLACE and NHA_ID in rtm_new_nexthop().
nexthop_add() checks if NLM_F_REPLACE is specified without non-zero NHA_ID, which does not require RTNL. Let's move the check to rtm_new_nexthop(). Signed-off-by: Kuniyuki Iwashima <kuniyu@amazon.com> Reviewed-by: Eric Dumazet <edumazet@google.com> Reviewed-by: David Ahern <dsahern@kernel.org> Link: https://patch.msgid.link/20250319230743.65267-5-kuniyu@amazon.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
caa074573c
commit
53b18aa998
|
|
@ -2928,11 +2928,6 @@ static struct nexthop *nexthop_add(struct net *net, struct nh_config *cfg,
|
|||
struct nexthop *nh;
|
||||
int err;
|
||||
|
||||
if (cfg->nlflags & NLM_F_REPLACE && !cfg->nh_id) {
|
||||
NL_SET_ERR_MSG(extack, "Replace requires nexthop id");
|
||||
return ERR_PTR(-EINVAL);
|
||||
}
|
||||
|
||||
if (!cfg->nh_id) {
|
||||
cfg->nh_id = nh_find_unused_id(net);
|
||||
if (!cfg->nh_id) {
|
||||
|
|
@ -3247,6 +3242,12 @@ static int rtm_new_nexthop(struct sk_buff *skb, struct nlmsghdr *nlh,
|
|||
if (err)
|
||||
goto out;
|
||||
|
||||
if (cfg.nlflags & NLM_F_REPLACE && !cfg.nh_id) {
|
||||
NL_SET_ERR_MSG(extack, "Replace requires nexthop id");
|
||||
err = -EINVAL;
|
||||
goto out;
|
||||
}
|
||||
|
||||
err = rtm_to_nh_config_rtnl(net, tb, &cfg, extack);
|
||||
if (err)
|
||||
goto out;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user