]> xenbits.xensource.com Git - people/pauldu/linux.git/commitdiff
mptcp: remove locking in mptcp_diag_fill_info
authorFlorian Westphal <fw@strlen.de>
Fri, 8 Apr 2022 19:45:59 +0000 (12:45 -0700)
committerDavid S. Miller <davem@davemloft.net>
Mon, 11 Apr 2022 10:55:53 +0000 (11:55 +0100)
Problem is that listener iteration would call this from atomic context
so this locking is not allowed.

One way is to drop locks before calling the helper, but afaics the lock
isn't really needed, all values are fetched via READ_ONCE().

Signed-off-by: Florian Westphal <fw@strlen.de>
Signed-off-by: Mat Martineau <mathew.j.martineau@linux.intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/mptcp/sockopt.c

index f949d22f52bd2cfc813b7b3f33381d1647cc9cd5..826b0c1dae9841d33bdb3dee3fc361642765e5a1 100644 (file)
@@ -853,15 +853,11 @@ out:
 
 void mptcp_diag_fill_info(struct mptcp_sock *msk, struct mptcp_info *info)
 {
-       struct sock *sk = &msk->sk.icsk_inet.sk;
        u32 flags = 0;
-       bool slow;
        u8 val;
 
        memset(info, 0, sizeof(*info));
 
-       slow = lock_sock_fast(sk);
-
        info->mptcpi_subflows = READ_ONCE(msk->pm.subflows);
        info->mptcpi_add_addr_signal = READ_ONCE(msk->pm.add_addr_signaled);
        info->mptcpi_add_addr_accepted = READ_ONCE(msk->pm.add_addr_accepted);
@@ -882,8 +878,6 @@ void mptcp_diag_fill_info(struct mptcp_sock *msk, struct mptcp_info *info)
        info->mptcpi_snd_una = READ_ONCE(msk->snd_una);
        info->mptcpi_rcv_nxt = READ_ONCE(msk->ack_seq);
        info->mptcpi_csum_enabled = READ_ONCE(msk->csum_enabled);
-
-       unlock_sock_fast(sk, slow);
 }
 EXPORT_SYMBOL_GPL(mptcp_diag_fill_info);