mirror of
https://github.com/torvalds/linux.git
synced 2026-05-29 17:43:52 +02:00
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>
This commit is contained in:
parent
f7fce98a73
commit
2f1ace4127
|
|
@ -5021,6 +5021,13 @@ inet6_rtm_newaddr(struct sk_buff *skb, struct nlmsghdr *nlh,
|
|||
if (tb[IFA_PROTO])
|
||||
cfg.ifa_proto = nla_get_u8(tb[IFA_PROTO]);
|
||||
|
||||
cfg.ifa_flags = nla_get_u32_default(tb[IFA_FLAGS], ifm->ifa_flags);
|
||||
|
||||
/* We ignore other flags so far. */
|
||||
cfg.ifa_flags &= IFA_F_NODAD | IFA_F_HOMEADDRESS |
|
||||
IFA_F_MANAGETEMPADDR | IFA_F_NOPREFIXROUTE |
|
||||
IFA_F_MCAUTOJOIN | IFA_F_OPTIMISTIC;
|
||||
|
||||
cfg.valid_lft = INFINITY_LIFE_TIME;
|
||||
cfg.preferred_lft = INFINITY_LIFE_TIME;
|
||||
|
||||
|
|
@ -5038,13 +5045,6 @@ inet6_rtm_newaddr(struct sk_buff *skb, struct nlmsghdr *nlh,
|
|||
return -ENODEV;
|
||||
}
|
||||
|
||||
cfg.ifa_flags = nla_get_u32_default(tb[IFA_FLAGS], ifm->ifa_flags);
|
||||
|
||||
/* We ignore other flags so far. */
|
||||
cfg.ifa_flags &= IFA_F_NODAD | IFA_F_HOMEADDRESS |
|
||||
IFA_F_MANAGETEMPADDR | IFA_F_NOPREFIXROUTE |
|
||||
IFA_F_MCAUTOJOIN | IFA_F_OPTIMISTIC;
|
||||
|
||||
idev = ipv6_find_idev(dev);
|
||||
if (IS_ERR(idev))
|
||||
return PTR_ERR(idev);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user