aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--net/ipv4/udp.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/net/ipv4/udp.c b/net/ipv4/udp.c
index c47c989cb1fb..c8bee189a193 100644
--- a/net/ipv4/udp.c
+++ b/net/ipv4/udp.c
@@ -1614,7 +1614,8 @@ static struct sock *udp_get_next(struct seq_file *seq, struct sock *sk)
1614 } while (sk && (!net_eq(sock_net(sk), net) || sk->sk_family != state->family)); 1614 } while (sk && (!net_eq(sock_net(sk), net) || sk->sk_family != state->family));
1615 1615
1616 if (!sk) { 1616 if (!sk) {
1617 spin_unlock_bh(&state->udp_table->hash[state->bucket].lock); 1617 if (state->bucket < UDP_HTABLE_SIZE)
1618 spin_unlock_bh(&state->udp_table->hash[state->bucket].lock);
1618 return udp_get_first(seq, state->bucket + 1); 1619 return udp_get_first(seq, state->bucket + 1);
1619 } 1620 }
1620 return sk; 1621 return sk;
@@ -1632,6 +1633,9 @@ static struct sock *udp_get_idx(struct seq_file *seq, loff_t pos)
1632 1633
1633static void *udp_seq_start(struct seq_file *seq, loff_t *pos) 1634static void *udp_seq_start(struct seq_file *seq, loff_t *pos)
1634{ 1635{
1636 struct udp_iter_state *state = seq->private;
1637 state->bucket = UDP_HTABLE_SIZE;
1638
1635 return *pos ? udp_get_idx(seq, *pos-1) : SEQ_START_TOKEN; 1639 return *pos ? udp_get_idx(seq, *pos-1) : SEQ_START_TOKEN;
1636} 1640}
1637 1641