Skip to content

Commit 3635c12

Browse files
committed
tgupdate: merge t/upstream base into t/upstream
2 parents 1238896 + d32a110 commit 3635c12

File tree

4 files changed

+28
-30
lines changed

4 files changed

+28
-30
lines changed

net/mptcp/pm.c

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -403,7 +403,7 @@ bool mptcp_pm_rm_addr_signal(struct mptcp_sock *msk, unsigned int remaining,
403403

404404
int mptcp_pm_get_local_id(struct mptcp_sock *msk, struct sock_common *skc)
405405
{
406-
struct mptcp_addr_info skc_local;
406+
struct mptcp_pm_addr_entry skc_local = { 0 };
407407
struct mptcp_addr_info msk_local;
408408

409409
if (WARN_ON_ONCE(!msk))
@@ -413,10 +413,13 @@ int mptcp_pm_get_local_id(struct mptcp_sock *msk, struct sock_common *skc)
413413
* addr
414414
*/
415415
mptcp_local_address((struct sock_common *)msk, &msk_local);
416-
mptcp_local_address((struct sock_common *)skc, &skc_local);
417-
if (mptcp_addresses_equal(&msk_local, &skc_local, false))
416+
mptcp_local_address((struct sock_common *)skc, &skc_local.addr);
417+
if (mptcp_addresses_equal(&msk_local, &skc_local.addr, false))
418418
return 0;
419419

420+
skc_local.addr.id = 0;
421+
skc_local.flags = MPTCP_PM_ADDR_FLAG_IMPLICIT;
422+
420423
if (mptcp_pm_is_userspace(msk))
421424
return mptcp_userspace_pm_get_local_id(msk, &skc_local);
422425
return mptcp_pm_nl_get_local_id(msk, &skc_local);

net/mptcp/pm_netlink.c

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1150,7 +1150,8 @@ static int mptcp_pm_nl_create_listen_socket(struct sock *sk,
11501150
return err;
11511151
}
11521152

1153-
int mptcp_pm_nl_get_local_id(struct mptcp_sock *msk, struct mptcp_addr_info *skc)
1153+
int mptcp_pm_nl_get_local_id(struct mptcp_sock *msk,
1154+
struct mptcp_pm_addr_entry *skc)
11541155
{
11551156
struct mptcp_pm_addr_entry *entry;
11561157
struct pm_nl_pernet *pernet;
@@ -1159,7 +1160,7 @@ int mptcp_pm_nl_get_local_id(struct mptcp_sock *msk, struct mptcp_addr_info *skc
11591160
pernet = pm_nl_get_pernet_from_msk(msk);
11601161

11611162
rcu_read_lock();
1162-
entry = __lookup_addr(pernet, skc);
1163+
entry = __lookup_addr(pernet, &skc->addr);
11631164
ret = entry ? entry->addr.id : -1;
11641165
rcu_read_unlock();
11651166
if (ret >= 0)
@@ -1170,12 +1171,8 @@ int mptcp_pm_nl_get_local_id(struct mptcp_sock *msk, struct mptcp_addr_info *skc
11701171
if (!entry)
11711172
return -ENOMEM;
11721173

1173-
entry->addr = *skc;
1174-
entry->addr.id = 0;
1174+
*entry = *skc;
11751175
entry->addr.port = 0;
1176-
entry->ifindex = 0;
1177-
entry->flags = MPTCP_PM_ADDR_FLAG_IMPLICIT;
1178-
entry->lsk = NULL;
11791176
ret = mptcp_pm_nl_append_new_local_addr(pernet, entry, true, false);
11801177
if (ret < 0)
11811178
kfree(entry);
@@ -1919,11 +1916,12 @@ static void mptcp_pm_nl_fullmesh(struct mptcp_sock *msk,
19191916
spin_unlock_bh(&msk->pm.lock);
19201917
}
19211918

1922-
static void mptcp_nl_set_flags(struct net *net, struct mptcp_addr_info *addr,
1923-
u8 flags, u8 changed)
1919+
static void mptcp_nl_set_flags(struct net *net,
1920+
struct mptcp_pm_addr_entry *local,
1921+
u8 changed)
19241922
{
1925-
u8 is_subflow = !!(flags & MPTCP_PM_ADDR_FLAG_SUBFLOW);
1926-
u8 bkup = !!(flags & MPTCP_PM_ADDR_FLAG_BACKUP);
1923+
u8 is_subflow = !!(local->flags & MPTCP_PM_ADDR_FLAG_SUBFLOW);
1924+
u8 bkup = !!(local->flags & MPTCP_PM_ADDR_FLAG_BACKUP);
19271925
long s_slot = 0, s_num = 0;
19281926
struct mptcp_sock *msk;
19291927

@@ -1938,10 +1936,10 @@ static void mptcp_nl_set_flags(struct net *net, struct mptcp_addr_info *addr,
19381936

19391937
lock_sock(sk);
19401938
if (changed & MPTCP_PM_ADDR_FLAG_BACKUP)
1941-
mptcp_pm_nl_mp_prio_send_ack(msk, addr, NULL, bkup);
1939+
mptcp_pm_nl_mp_prio_send_ack(msk, &local->addr, NULL, bkup);
19421940
/* Subflows will only be recreated if the SUBFLOW flag is set */
19431941
if (is_subflow && (changed & MPTCP_PM_ADDR_FLAG_FULLMESH))
1944-
mptcp_pm_nl_fullmesh(msk, addr);
1942+
mptcp_pm_nl_fullmesh(msk, &local->addr);
19451943
release_sock(sk);
19461944

19471945
next:
@@ -1995,7 +1993,7 @@ int mptcp_pm_nl_set_flags(struct mptcp_pm_addr_entry *local,
19951993
*local = *entry;
19961994
spin_unlock_bh(&pernet->lock);
19971995

1998-
mptcp_nl_set_flags(net, &local->addr, entry->flags, changed);
1996+
mptcp_nl_set_flags(net, local, changed);
19991997
return 0;
20001998
}
20011999

net/mptcp/pm_userspace.c

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -131,27 +131,22 @@ mptcp_userspace_pm_lookup_addr_by_id(struct mptcp_sock *msk, unsigned int id)
131131
}
132132

133133
int mptcp_userspace_pm_get_local_id(struct mptcp_sock *msk,
134-
struct mptcp_addr_info *skc)
134+
struct mptcp_pm_addr_entry *skc)
135135
{
136-
struct mptcp_pm_addr_entry *entry = NULL, new_entry;
137136
__be16 msk_sport = ((struct inet_sock *)
138137
inet_sk((struct sock *)msk))->inet_sport;
138+
struct mptcp_pm_addr_entry *entry;
139139

140140
spin_lock_bh(&msk->pm.lock);
141-
entry = mptcp_userspace_pm_lookup_addr(msk, skc);
141+
entry = mptcp_userspace_pm_lookup_addr(msk, &skc->addr);
142142
spin_unlock_bh(&msk->pm.lock);
143143
if (entry)
144144
return entry->addr.id;
145145

146-
memset(&new_entry, 0, sizeof(struct mptcp_pm_addr_entry));
147-
new_entry.addr = *skc;
148-
new_entry.addr.id = 0;
149-
new_entry.flags = MPTCP_PM_ADDR_FLAG_IMPLICIT;
150-
151-
if (new_entry.addr.port == msk_sport)
152-
new_entry.addr.port = 0;
146+
if (skc->addr.port == msk_sport)
147+
skc->addr.port = 0;
153148

154-
return mptcp_userspace_pm_append_new_local_addr(msk, &new_entry, true);
149+
return mptcp_userspace_pm_append_new_local_addr(msk, skc, true);
155150
}
156151

157152
bool mptcp_userspace_pm_is_backup(struct mptcp_sock *msk,

net/mptcp/protocol.h

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1126,8 +1126,10 @@ bool mptcp_pm_add_addr_signal(struct mptcp_sock *msk, const struct sk_buff *skb,
11261126
bool mptcp_pm_rm_addr_signal(struct mptcp_sock *msk, unsigned int remaining,
11271127
struct mptcp_rm_list *rm_list);
11281128
int mptcp_pm_get_local_id(struct mptcp_sock *msk, struct sock_common *skc);
1129-
int mptcp_pm_nl_get_local_id(struct mptcp_sock *msk, struct mptcp_addr_info *skc);
1130-
int mptcp_userspace_pm_get_local_id(struct mptcp_sock *msk, struct mptcp_addr_info *skc);
1129+
int mptcp_pm_nl_get_local_id(struct mptcp_sock *msk,
1130+
struct mptcp_pm_addr_entry *skc);
1131+
int mptcp_userspace_pm_get_local_id(struct mptcp_sock *msk,
1132+
struct mptcp_pm_addr_entry *skc);
11311133
bool mptcp_pm_is_backup(struct mptcp_sock *msk, struct sock_common *skc);
11321134
bool mptcp_pm_nl_is_backup(struct mptcp_sock *msk, struct mptcp_addr_info *skc);
11331135
bool mptcp_userspace_pm_is_backup(struct mptcp_sock *msk, struct mptcp_addr_info *skc);

0 commit comments

Comments
 (0)