diff options
| -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 " |
