mirror of
git://git.yoctoproject.org/linux-yocto.git
synced 2025-10-23 07:23:12 +02:00
inet: Remove rtnl_is_held arg of lwtunnel_valid_encap_type(_attr)?().
Commit f130a0cc1b ("inet: fix lwtunnel_valid_encap_type() lock
imbalance") added the rtnl_is_held argument as a temporary fix while
I'm converting nexthop and IPv6 routing table to per-netns RTNL or RCU.
Now all callers of lwtunnel_valid_encap_type() do not hold RTNL.
Let's remove the argument.
Signed-off-by: Kuniyuki Iwashima <kuniyu@amazon.com>
Link: https://patch.msgid.link/20250516022759.44392-3-kuniyu@amazon.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
f1a8d107d9
commit
f0a56c17e6
|
|
@ -116,11 +116,9 @@ int lwtunnel_encap_add_ops(const struct lwtunnel_encap_ops *op,
|
|||
int lwtunnel_encap_del_ops(const struct lwtunnel_encap_ops *op,
|
||||
unsigned int num);
|
||||
int lwtunnel_valid_encap_type(u16 encap_type,
|
||||
struct netlink_ext_ack *extack,
|
||||
bool rtnl_is_held);
|
||||
struct netlink_ext_ack *extack);
|
||||
int lwtunnel_valid_encap_type_attr(struct nlattr *attr, int len,
|
||||
struct netlink_ext_ack *extack,
|
||||
bool rtnl_is_held);
|
||||
struct netlink_ext_ack *extack);
|
||||
int lwtunnel_build_state(struct net *net, u16 encap_type,
|
||||
struct nlattr *encap,
|
||||
unsigned int family, const void *cfg,
|
||||
|
|
@ -203,15 +201,14 @@ static inline int lwtunnel_encap_del_ops(const struct lwtunnel_encap_ops *op,
|
|||
}
|
||||
|
||||
static inline int lwtunnel_valid_encap_type(u16 encap_type,
|
||||
struct netlink_ext_ack *extack,
|
||||
bool rtnl_is_held)
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
NL_SET_ERR_MSG(extack, "CONFIG_LWTUNNEL is not enabled in this kernel");
|
||||
return -EOPNOTSUPP;
|
||||
}
|
||||
|
||||
static inline int lwtunnel_valid_encap_type_attr(struct nlattr *attr, int len,
|
||||
struct netlink_ext_ack *extack,
|
||||
bool rtnl_is_held)
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
/* return 0 since we are not walking attr looking for
|
||||
* RTA_ENCAP_TYPE attribute on nexthops.
|
||||
|
|
|
|||
|
|
@ -149,8 +149,7 @@ int lwtunnel_build_state(struct net *net, u16 encap_type,
|
|||
}
|
||||
EXPORT_SYMBOL_GPL(lwtunnel_build_state);
|
||||
|
||||
int lwtunnel_valid_encap_type(u16 encap_type, struct netlink_ext_ack *extack,
|
||||
bool rtnl_is_held)
|
||||
int lwtunnel_valid_encap_type(u16 encap_type, struct netlink_ext_ack *extack)
|
||||
{
|
||||
const struct lwtunnel_encap_ops *ops;
|
||||
int ret = -EINVAL;
|
||||
|
|
@ -167,12 +166,7 @@ int lwtunnel_valid_encap_type(u16 encap_type, struct netlink_ext_ack *extack,
|
|||
const char *encap_type_str = lwtunnel_encap_str(encap_type);
|
||||
|
||||
if (encap_type_str) {
|
||||
if (rtnl_is_held)
|
||||
__rtnl_unlock();
|
||||
request_module("rtnl-lwt-%s", encap_type_str);
|
||||
if (rtnl_is_held)
|
||||
rtnl_lock();
|
||||
|
||||
ops = rcu_access_pointer(lwtun_encaps[encap_type]);
|
||||
}
|
||||
}
|
||||
|
|
@ -186,8 +180,7 @@ int lwtunnel_valid_encap_type(u16 encap_type, struct netlink_ext_ack *extack,
|
|||
EXPORT_SYMBOL_GPL(lwtunnel_valid_encap_type);
|
||||
|
||||
int lwtunnel_valid_encap_type_attr(struct nlattr *attr, int remaining,
|
||||
struct netlink_ext_ack *extack,
|
||||
bool rtnl_is_held)
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct rtnexthop *rtnh = (struct rtnexthop *)attr;
|
||||
struct nlattr *nla_entype;
|
||||
|
|
@ -208,9 +201,7 @@ int lwtunnel_valid_encap_type_attr(struct nlattr *attr, int remaining,
|
|||
}
|
||||
encap_type = nla_get_u16(nla_entype);
|
||||
|
||||
if (lwtunnel_valid_encap_type(encap_type,
|
||||
extack,
|
||||
rtnl_is_held) != 0)
|
||||
if (lwtunnel_valid_encap_type(encap_type, extack))
|
||||
return -EOPNOTSUPP;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -807,7 +807,7 @@ static int rtm_to_fib_config(struct net *net, struct sk_buff *skb,
|
|||
case RTA_MULTIPATH:
|
||||
err = lwtunnel_valid_encap_type_attr(nla_data(attr),
|
||||
nla_len(attr),
|
||||
extack, false);
|
||||
extack);
|
||||
if (err < 0)
|
||||
goto errout;
|
||||
cfg->fc_mp = nla_data(attr);
|
||||
|
|
@ -825,7 +825,7 @@ static int rtm_to_fib_config(struct net *net, struct sk_buff *skb,
|
|||
case RTA_ENCAP_TYPE:
|
||||
cfg->fc_encap_type = nla_get_u16(attr);
|
||||
err = lwtunnel_valid_encap_type(cfg->fc_encap_type,
|
||||
extack, false);
|
||||
extack);
|
||||
if (err < 0)
|
||||
goto errout;
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -3180,8 +3180,7 @@ static int rtm_to_nh_config(struct net *net, struct sk_buff *skb,
|
|||
}
|
||||
|
||||
cfg->nh_encap_type = nla_get_u16(tb[NHA_ENCAP_TYPE]);
|
||||
err = lwtunnel_valid_encap_type(cfg->nh_encap_type,
|
||||
extack, false);
|
||||
err = lwtunnel_valid_encap_type(cfg->nh_encap_type, extack);
|
||||
if (err < 0)
|
||||
goto out;
|
||||
|
||||
|
|
|
|||
|
|
@ -5172,8 +5172,7 @@ static int rtm_to_fib6_multipath_config(struct fib6_config *cfg,
|
|||
rtnh = rtnh_next(rtnh, &remaining);
|
||||
} while (rtnh_ok(rtnh, remaining));
|
||||
|
||||
return lwtunnel_valid_encap_type_attr(cfg->fc_mp, cfg->fc_mp_len,
|
||||
extack, false);
|
||||
return lwtunnel_valid_encap_type_attr(cfg->fc_mp, cfg->fc_mp_len, extack);
|
||||
}
|
||||
|
||||
static int rtm_to_fib6_config(struct sk_buff *skb, struct nlmsghdr *nlh,
|
||||
|
|
@ -5310,8 +5309,7 @@ static int rtm_to_fib6_config(struct sk_buff *skb, struct nlmsghdr *nlh,
|
|||
if (tb[RTA_ENCAP_TYPE]) {
|
||||
cfg->fc_encap_type = nla_get_u16(tb[RTA_ENCAP_TYPE]);
|
||||
|
||||
err = lwtunnel_valid_encap_type(cfg->fc_encap_type,
|
||||
extack, false);
|
||||
err = lwtunnel_valid_encap_type(cfg->fc_encap_type, extack);
|
||||
if (err < 0)
|
||||
goto errout;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user