diff options
Diffstat (limited to 'net/appletalk/atalk_proc.c')
-rw-r--r-- | net/appletalk/atalk_proc.c | 30 |
1 files changed, 3 insertions, 27 deletions
diff --git a/net/appletalk/atalk_proc.c b/net/appletalk/atalk_proc.c index 80caad1a31a5..6ef0e761e5de 100644 --- a/net/appletalk/atalk_proc.c +++ b/net/appletalk/atalk_proc.c | |||
@@ -144,40 +144,16 @@ out: | |||
144 | return 0; | 144 | return 0; |
145 | } | 145 | } |
146 | 146 | ||
147 | static __inline__ struct sock *atalk_get_socket_idx(loff_t pos) | ||
148 | { | ||
149 | struct sock *s; | ||
150 | struct hlist_node *node; | ||
151 | |||
152 | sk_for_each(s, node, &atalk_sockets) | ||
153 | if (!pos--) | ||
154 | goto found; | ||
155 | s = NULL; | ||
156 | found: | ||
157 | return s; | ||
158 | } | ||
159 | |||
160 | static void *atalk_seq_socket_start(struct seq_file *seq, loff_t *pos) | 147 | static void *atalk_seq_socket_start(struct seq_file *seq, loff_t *pos) |
161 | __acquires(atalk_sockets_lock) | 148 | __acquires(atalk_sockets_lock) |
162 | { | 149 | { |
163 | loff_t l = *pos; | ||
164 | |||
165 | read_lock_bh(&atalk_sockets_lock); | 150 | read_lock_bh(&atalk_sockets_lock); |
166 | return l ? atalk_get_socket_idx(--l) : SEQ_START_TOKEN; | 151 | return seq_hlist_start_head(&atalk_sockets, *pos); |
167 | } | 152 | } |
168 | 153 | ||
169 | static void *atalk_seq_socket_next(struct seq_file *seq, void *v, loff_t *pos) | 154 | static void *atalk_seq_socket_next(struct seq_file *seq, void *v, loff_t *pos) |
170 | { | 155 | { |
171 | struct sock *i; | 156 | return seq_hlist_next(v, &atalk_sockets, pos); |
172 | |||
173 | ++*pos; | ||
174 | if (v == SEQ_START_TOKEN) { | ||
175 | i = sk_head(&atalk_sockets); | ||
176 | goto out; | ||
177 | } | ||
178 | i = sk_next(v); | ||
179 | out: | ||
180 | return i; | ||
181 | } | 157 | } |
182 | 158 | ||
183 | static void atalk_seq_socket_stop(struct seq_file *seq, void *v) | 159 | static void atalk_seq_socket_stop(struct seq_file *seq, void *v) |
@@ -197,7 +173,7 @@ static int atalk_seq_socket_show(struct seq_file *seq, void *v) | |||
197 | goto out; | 173 | goto out; |
198 | } | 174 | } |
199 | 175 | ||
200 | s = v; | 176 | s = sk_entry(v); |
201 | at = at_sk(s); | 177 | at = at_sk(s); |
202 | 178 | ||
203 | seq_printf(seq, "%02X %04X:%02X:%02X %04X:%02X:%02X %08X:%08X " | 179 | seq_printf(seq, "%02X %04X:%02X:%02X %04X:%02X:%02X %08X:%08X " |