diff options
author | Tom Herbert <tom@herbertland.com> | 2016-08-23 14:55:31 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2016-08-23 19:23:12 -0400 |
commit | 1616b38f201945f5fc88aa09b525e3625777aa7c (patch) | |
tree | 0d5f890a7b0d21fa7c4d7580a70e0bfcae2c0738 /net/kcm/kcmproc.c | |
parent | cff6a334e63420e95ec40dc7fcdc0b8258615760 (diff) |
kcm: Fix locking issue
Lock the lower socket in kcm_unattach. Release during call to strp_done
since that function cancels the RX timers and work queue with sync.
Also added some status information in psock reporting.
Signed-off-by: Tom Herbert <tom@herbertland.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/kcm/kcmproc.c')
-rw-r--r-- | net/kcm/kcmproc.c | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/net/kcm/kcmproc.c b/net/kcm/kcmproc.c index 47e445364f4f..bf75c9231cca 100644 --- a/net/kcm/kcmproc.c +++ b/net/kcm/kcmproc.c | |||
@@ -173,14 +173,24 @@ static void kcm_format_psock(struct kcm_psock *psock, struct seq_file *seq, | |||
173 | if (psock->strp.rx_stopped) | 173 | if (psock->strp.rx_stopped) |
174 | seq_puts(seq, "RxStop "); | 174 | seq_puts(seq, "RxStop "); |
175 | 175 | ||
176 | if (psock->strp.rx_paused) | ||
177 | seq_puts(seq, "RxPause "); | ||
178 | |||
179 | if (psock->tx_kcm) | 176 | if (psock->tx_kcm) |
180 | seq_printf(seq, "Rsvd-%d ", psock->tx_kcm->index); | 177 | seq_printf(seq, "Rsvd-%d ", psock->tx_kcm->index); |
181 | 178 | ||
182 | if (psock->ready_rx_msg) | 179 | if (!psock->strp.rx_paused && !psock->ready_rx_msg) { |
183 | seq_puts(seq, "RdyRx "); | 180 | if (psock->sk->sk_receive_queue.qlen) { |
181 | if (psock->strp.rx_need_bytes) | ||
182 | seq_printf(seq, "RxWait=%u ", | ||
183 | psock->strp.rx_need_bytes); | ||
184 | else | ||
185 | seq_printf(seq, "RxWait "); | ||
186 | } | ||
187 | } else { | ||
188 | if (psock->strp.rx_paused) | ||
189 | seq_puts(seq, "RxPause "); | ||
190 | |||
191 | if (psock->ready_rx_msg) | ||
192 | seq_puts(seq, "RdyRx "); | ||
193 | } | ||
184 | 194 | ||
185 | seq_puts(seq, "\n"); | 195 | seq_puts(seq, "\n"); |
186 | } | 196 | } |