mirror of
https://gitee.com/bianbu-linux/linux-6.6
synced 2025-04-24 14:07:52 -04:00
mptcp: drop lookup_by_id in lookup_addr
commit af250c27ea1c404e210fc3a308b20f772df584d6 upstream. When the lookup_by_id parameter of __lookup_addr() is true, it's the same as __lookup_addr_by_id(), it can be replaced by __lookup_addr_by_id() directly. So drop this parameter, let __lookup_addr() only looks up address on the local address list by comparing addresses in it, not address ids. Signed-off-by: Geliang Tang <tanggeliang@kylinos.cn> Reviewed-by: Matthieu Baerts (NGI0) <matttbe@kernel.org> Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org> Link: https://lore.kernel.org/r/20240305-upstream-net-next-20240304-mptcp-misc-cleanup-v1-4-c436ba5e569b@kernel.org Signed-off-by: Jakub Kicinski <kuba@kernel.org> Stable-dep-of: db3eab8110bc ("mptcp: pm: use _rcu variant under rcu_read_lock") [ Conflicts in pm_netlink.c, because commit 6a42477fe449 ("mptcp: update set_flags interfaces") is not in this version, and causes too many conflicts when backporting it. The conflict is easy to resolve: addr is a pointer here here in mptcp_pm_nl_set_flags(), the rest of the code is the same. ] Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
416001b041
commit
fc3c73284d
1 changed files with 5 additions and 7 deletions
|
@ -521,15 +521,12 @@ __lookup_addr_by_id(struct pm_nl_pernet *pernet, unsigned int id)
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct mptcp_pm_addr_entry *
|
static struct mptcp_pm_addr_entry *
|
||||||
__lookup_addr(struct pm_nl_pernet *pernet, const struct mptcp_addr_info *info,
|
__lookup_addr(struct pm_nl_pernet *pernet, const struct mptcp_addr_info *info)
|
||||||
bool lookup_by_id)
|
|
||||||
{
|
{
|
||||||
struct mptcp_pm_addr_entry *entry;
|
struct mptcp_pm_addr_entry *entry;
|
||||||
|
|
||||||
list_for_each_entry(entry, &pernet->local_addr_list, list) {
|
list_for_each_entry(entry, &pernet->local_addr_list, list) {
|
||||||
if ((!lookup_by_id &&
|
if (mptcp_addresses_equal(&entry->addr, info, entry->addr.port))
|
||||||
mptcp_addresses_equal(&entry->addr, info, entry->addr.port)) ||
|
|
||||||
(lookup_by_id && entry->addr.id == info->id))
|
|
||||||
return entry;
|
return entry;
|
||||||
}
|
}
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -560,7 +557,7 @@ static void mptcp_pm_create_subflow_or_signal_addr(struct mptcp_sock *msk)
|
||||||
|
|
||||||
mptcp_local_address((struct sock_common *)msk->first, &mpc_addr);
|
mptcp_local_address((struct sock_common *)msk->first, &mpc_addr);
|
||||||
rcu_read_lock();
|
rcu_read_lock();
|
||||||
entry = __lookup_addr(pernet, &mpc_addr, false);
|
entry = __lookup_addr(pernet, &mpc_addr);
|
||||||
if (entry) {
|
if (entry) {
|
||||||
__clear_bit(entry->addr.id, msk->pm.id_avail_bitmap);
|
__clear_bit(entry->addr.id, msk->pm.id_avail_bitmap);
|
||||||
msk->mpc_endpoint_id = entry->addr.id;
|
msk->mpc_endpoint_id = entry->addr.id;
|
||||||
|
@ -2064,7 +2061,8 @@ int mptcp_pm_nl_set_flags(struct net *net, struct mptcp_pm_addr_entry *addr, u8
|
||||||
}
|
}
|
||||||
|
|
||||||
spin_lock_bh(&pernet->lock);
|
spin_lock_bh(&pernet->lock);
|
||||||
entry = __lookup_addr(pernet, &addr->addr, lookup_by_id);
|
entry = lookup_by_id ? __lookup_addr_by_id(pernet, addr->addr.id) :
|
||||||
|
__lookup_addr(pernet, &addr->addr);
|
||||||
if (!entry) {
|
if (!entry) {
|
||||||
spin_unlock_bh(&pernet->lock);
|
spin_unlock_bh(&pernet->lock);
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue