On Mon, 15 Mar 2021, Geliang Tang wrote: > Hold the msk lock when invoking mptcp_pm_remove_addr. > > Signed-off-by: Geliang Tang > --- > net/mptcp/pm_netlink.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/net/mptcp/pm_netlink.c b/net/mptcp/pm_netlink.c > index 037817b83f4c..b7acab673cc7 100644 > --- a/net/mptcp/pm_netlink.c > +++ b/net/mptcp/pm_netlink.c > @@ -1185,7 +1185,9 @@ static int mptcp_nl_remove_id_zero_address(struct net *net, > goto next; > > lock_sock(sk); > + spin_lock_bh(&msk->pm.lock); > mptcp_pm_remove_addr(msk, &list); > + spin_unlock_bh(&msk->pm.lock); > mptcp_pm_remove_subflow(msk, &list); > release_sock(sk); The msk->pm.lock is immediately reacquired in mptcp_pm_remove_subflow - what about acquiring the lock once and calling mtpcp_pm_nl_subflow_received() directly instead? -- Mat Martineau Intel