Skip to content

Commit 1bdad5d

Browse files
Geliang Tangintel-lab-lkp
authored andcommitted
mptcp: hold msk lock before removing id 0 address
In mptcp_pm_nl_remove_doit(), move 'lock_sock(sk)' before invoking the function mptcp_userspace_pm_remove_id_zero_address(). Then no need to hold and release this lock in this function. And 'sk' and 'err' variables and 'remove_err' label in it can be dropped. Signed-off-by: Geliang Tang <[email protected]>
1 parent 96a92e9 commit 1bdad5d

File tree

1 file changed

+5
-11
lines changed

1 file changed

+5
-11
lines changed

net/mptcp/pm_userspace.c

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -256,31 +256,24 @@ static int mptcp_userspace_pm_remove_id_zero_address(struct mptcp_sock *msk)
256256
{
257257
struct mptcp_rm_list list = { .nr = 0 };
258258
struct mptcp_subflow_context *subflow;
259-
struct sock *sk = (struct sock *)msk;
260259
bool has_id_0 = false;
261-
int err = -EINVAL;
262260

263-
lock_sock(sk);
264261
mptcp_for_each_subflow(msk, subflow) {
265262
if (READ_ONCE(subflow->local_id) == 0) {
266263
has_id_0 = true;
267264
break;
268265
}
269266
}
270267
if (!has_id_0)
271-
goto remove_err;
268+
return -EINVAL;
272269

273270
list.ids[list.nr++] = 0;
274271

275272
spin_lock_bh(&msk->pm.lock);
276273
mptcp_pm_remove_addr(msk, &list);
277274
spin_unlock_bh(&msk->pm.lock);
278275

279-
err = 0;
280-
281-
remove_err:
282-
release_sock(sk);
283-
return err;
276+
return 0;
284277
}
285278

286279
void mptcp_pm_remove_addr_entry(struct mptcp_sock *msk,
@@ -324,13 +317,14 @@ int mptcp_pm_nl_remove_doit(struct sk_buff *skb, struct genl_info *info)
324317

325318
sk = (struct sock *)msk;
326319

320+
lock_sock(sk);
321+
327322
if (id_val == 0) {
328323
err = mptcp_userspace_pm_remove_id_zero_address(msk);
324+
release_sock(sk);
329325
goto out;
330326
}
331327

332-
lock_sock(sk);
333-
334328
spin_lock_bh(&msk->pm.lock);
335329
match = mptcp_userspace_pm_lookup_addr_by_id(msk, id_val);
336330
if (!match) {

0 commit comments

Comments
 (0)