Skip to content

Commit 2f1ace4

Browse files
q2venkuba-moo
authored andcommitted
ipv6: Set cfg.ifa_flags before device lookup in inet6_rtm_newaddr().
We will convert inet6_rtm_newaddr() to per-netns RTNL. Except for IFA_F_OPTIMISTIC, cfg.ifa_flags can be set before __dev_get_by_index(). Let's move ifa_flags setup before __dev_get_by_index() so that we can set ifa_flags without RTNL. Also, now it's moved before tb[IFA_CACHEINFO] in preparing for the next patch. Signed-off-by: Kuniyuki Iwashima <kuniyu@amazon.com> Link: https://patch.msgid.link/20250115080608.28127-9-kuniyu@amazon.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
1 parent f7fce98 commit 2f1ace4

File tree

1 file changed

+7
-7
lines changed

1 file changed

+7
-7
lines changed

net/ipv6/addrconf.c

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5021,6 +5021,13 @@ inet6_rtm_newaddr(struct sk_buff *skb, struct nlmsghdr *nlh,
50215021
if (tb[IFA_PROTO])
50225022
cfg.ifa_proto = nla_get_u8(tb[IFA_PROTO]);
50235023

5024+
cfg.ifa_flags = nla_get_u32_default(tb[IFA_FLAGS], ifm->ifa_flags);
5025+
5026+
/* We ignore other flags so far. */
5027+
cfg.ifa_flags &= IFA_F_NODAD | IFA_F_HOMEADDRESS |
5028+
IFA_F_MANAGETEMPADDR | IFA_F_NOPREFIXROUTE |
5029+
IFA_F_MCAUTOJOIN | IFA_F_OPTIMISTIC;
5030+
50245031
cfg.valid_lft = INFINITY_LIFE_TIME;
50255032
cfg.preferred_lft = INFINITY_LIFE_TIME;
50265033

@@ -5038,13 +5045,6 @@ inet6_rtm_newaddr(struct sk_buff *skb, struct nlmsghdr *nlh,
50385045
return -ENODEV;
50395046
}
50405047

5041-
cfg.ifa_flags = nla_get_u32_default(tb[IFA_FLAGS], ifm->ifa_flags);
5042-
5043-
/* We ignore other flags so far. */
5044-
cfg.ifa_flags &= IFA_F_NODAD | IFA_F_HOMEADDRESS |
5045-
IFA_F_MANAGETEMPADDR | IFA_F_NOPREFIXROUTE |
5046-
IFA_F_MCAUTOJOIN | IFA_F_OPTIMISTIC;
5047-
50485048
idev = ipv6_find_idev(dev);
50495049
if (IS_ERR(idev))
50505050
return PTR_ERR(idev);

0 commit comments

Comments
 (0)