mirror of
https://github.com/torvalds/linux.git
synced 2026-04-18 06:44:00 -04:00
Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
Cross-merge networking fixes after downstream PR (net-7.0-rc8). Conflicts: net/ipv6/seg6_iptunnel.cc3812651b5("seg6: separate dst_cache for input and output paths in seg6 lwtunnel")78723a62b9("seg6: add per-route tunnel source address") https://lore.kernel.org/adZhwtOYfo-0ImSa@sirena.org.uk net/ipv4/icmp.cfde29fd934("ipv4: icmp: fix null-ptr-deref in icmp_build_probe()")d98adfbdd5("ipv4: drop ipv6_stub usage and use direct function calls") https://lore.kernel.org/adO3dccqnr6j-BL9@sirena.org.uk Adjacent changes: drivers/net/ethernet/stmicro/stmmac/chain_mode.c51f4e090b9("net: stmmac: fix integer underflow in chain mode")6b4286e055("net: stmmac: rename STMMAC_GET_ENTRY() -> STMMAC_NEXT_ENTRY()") Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
@@ -720,7 +720,7 @@ static void __mptcp_pm_release_addr_entry(struct mptcp_pm_addr_entry *entry)
|
||||
|
||||
static int mptcp_pm_nl_append_new_local_addr(struct pm_nl_pernet *pernet,
|
||||
struct mptcp_pm_addr_entry *entry,
|
||||
bool needs_id, bool replace)
|
||||
bool replace)
|
||||
{
|
||||
struct mptcp_pm_addr_entry *cur, *del_entry = NULL;
|
||||
int ret = -EINVAL;
|
||||
@@ -779,7 +779,7 @@ static int mptcp_pm_nl_append_new_local_addr(struct pm_nl_pernet *pernet,
|
||||
}
|
||||
}
|
||||
|
||||
if (!entry->addr.id && needs_id) {
|
||||
if (!entry->addr.id) {
|
||||
find_next:
|
||||
entry->addr.id = find_next_zero_bit(pernet->id_bitmap,
|
||||
MPTCP_PM_MAX_ADDR_ID + 1,
|
||||
@@ -790,7 +790,7 @@ find_next:
|
||||
}
|
||||
}
|
||||
|
||||
if (!entry->addr.id && needs_id)
|
||||
if (!entry->addr.id)
|
||||
goto out;
|
||||
|
||||
__set_bit(entry->addr.id, pernet->id_bitmap);
|
||||
@@ -923,7 +923,7 @@ int mptcp_pm_nl_get_local_id(struct mptcp_sock *msk,
|
||||
return -ENOMEM;
|
||||
|
||||
entry->addr.port = 0;
|
||||
ret = mptcp_pm_nl_append_new_local_addr(pernet, entry, true, false);
|
||||
ret = mptcp_pm_nl_append_new_local_addr(pernet, entry, false);
|
||||
if (ret < 0)
|
||||
kfree(entry);
|
||||
|
||||
@@ -977,18 +977,6 @@ next:
|
||||
return 0;
|
||||
}
|
||||
|
||||
static bool mptcp_pm_has_addr_attr_id(const struct nlattr *attr,
|
||||
struct genl_info *info)
|
||||
{
|
||||
struct nlattr *tb[MPTCP_PM_ADDR_ATTR_MAX + 1];
|
||||
|
||||
if (!nla_parse_nested_deprecated(tb, MPTCP_PM_ADDR_ATTR_MAX, attr,
|
||||
mptcp_pm_address_nl_policy, info->extack) &&
|
||||
tb[MPTCP_PM_ADDR_ATTR_ID])
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
/* Add an MPTCP endpoint */
|
||||
int mptcp_pm_nl_add_addr_doit(struct sk_buff *skb, struct genl_info *info)
|
||||
{
|
||||
@@ -1037,9 +1025,7 @@ int mptcp_pm_nl_add_addr_doit(struct sk_buff *skb, struct genl_info *info)
|
||||
goto out_free;
|
||||
}
|
||||
}
|
||||
ret = mptcp_pm_nl_append_new_local_addr(pernet, entry,
|
||||
!mptcp_pm_has_addr_attr_id(attr, info),
|
||||
true);
|
||||
ret = mptcp_pm_nl_append_new_local_addr(pernet, entry, true);
|
||||
if (ret < 0) {
|
||||
GENL_SET_ERR_MSG_FMT(info, "too many addresses or duplicate one: %d", ret);
|
||||
goto out_free;
|
||||
|
||||
@@ -4688,6 +4688,8 @@ int __init mptcp_proto_v6_init(void)
|
||||
{
|
||||
int err;
|
||||
|
||||
mptcp_subflow_v6_init();
|
||||
|
||||
mptcp_v6_prot = mptcp_prot;
|
||||
strscpy(mptcp_v6_prot.name, "MPTCPv6", sizeof(mptcp_v6_prot.name));
|
||||
mptcp_v6_prot.slab = NULL;
|
||||
|
||||
@@ -911,6 +911,7 @@ static inline void mptcp_subflow_tcp_fallback(struct sock *sk,
|
||||
void __init mptcp_proto_init(void);
|
||||
#if IS_ENABLED(CONFIG_MPTCP_IPV6)
|
||||
int __init mptcp_proto_v6_init(void);
|
||||
void __init mptcp_subflow_v6_init(void);
|
||||
#endif
|
||||
|
||||
struct sock *mptcp_sk_clone_init(const struct sock *sk,
|
||||
|
||||
@@ -2165,7 +2165,15 @@ void __init mptcp_subflow_init(void)
|
||||
tcp_prot_override.psock_update_sk_prot = NULL;
|
||||
#endif
|
||||
|
||||
mptcp_diag_subflow_init(&subflow_ulp_ops);
|
||||
|
||||
if (tcp_register_ulp(&subflow_ulp_ops) != 0)
|
||||
panic("MPTCP: failed to register subflows to ULP\n");
|
||||
}
|
||||
|
||||
#if IS_ENABLED(CONFIG_MPTCP_IPV6)
|
||||
void __init mptcp_subflow_v6_init(void)
|
||||
{
|
||||
/* In struct mptcp_subflow_request_sock, we assume the TCP request sock
|
||||
* structures for v4 and v6 have the same size. It should not changed in
|
||||
* the future but better to make sure to be warned if it is no longer
|
||||
@@ -2203,10 +2211,5 @@ void __init mptcp_subflow_init(void)
|
||||
/* Disable sockmap processing for subflows */
|
||||
tcpv6_prot_override.psock_update_sk_prot = NULL;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
mptcp_diag_subflow_init(&subflow_ulp_ops);
|
||||
|
||||
if (tcp_register_ulp(&subflow_ulp_ops) != 0)
|
||||
panic("MPTCP: failed to register subflows to ULP\n");
|
||||
}
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user