diff options
Diffstat (limited to 'crypto/proc.c')
-rw-r--r-- | crypto/proc.c | 17 |
1 files changed, 3 insertions, 14 deletions
diff --git a/crypto/proc.c b/crypto/proc.c index 102c751a124c..3d73323ff79b 100644 --- a/crypto/proc.c +++ b/crypto/proc.c | |||
@@ -23,24 +23,13 @@ | |||
23 | 23 | ||
24 | static void *c_start(struct seq_file *m, loff_t *pos) | 24 | static void *c_start(struct seq_file *m, loff_t *pos) |
25 | { | 25 | { |
26 | struct list_head *v; | ||
27 | loff_t n = *pos; | ||
28 | |||
29 | down_read(&crypto_alg_sem); | 26 | down_read(&crypto_alg_sem); |
30 | list_for_each(v, &crypto_alg_list) | 27 | return seq_list_start(&crypto_alg_list, *pos); |
31 | if (!n--) | ||
32 | return list_entry(v, struct crypto_alg, cra_list); | ||
33 | return NULL; | ||
34 | } | 28 | } |
35 | 29 | ||
36 | static void *c_next(struct seq_file *m, void *p, loff_t *pos) | 30 | static void *c_next(struct seq_file *m, void *p, loff_t *pos) |
37 | { | 31 | { |
38 | struct list_head *v = p; | 32 | return seq_list_next(p, &crypto_alg_list, pos); |
39 | |||
40 | (*pos)++; | ||
41 | v = v->next; | ||
42 | return (v == &crypto_alg_list) ? | ||
43 | NULL : list_entry(v, struct crypto_alg, cra_list); | ||
44 | } | 33 | } |
45 | 34 | ||
46 | static void c_stop(struct seq_file *m, void *p) | 35 | static void c_stop(struct seq_file *m, void *p) |
@@ -50,7 +39,7 @@ static void c_stop(struct seq_file *m, void *p) | |||
50 | 39 | ||
51 | static int c_show(struct seq_file *m, void *p) | 40 | static int c_show(struct seq_file *m, void *p) |
52 | { | 41 | { |
53 | struct crypto_alg *alg = (struct crypto_alg *)p; | 42 | struct crypto_alg *alg = list_entry(p, struct crypto_alg, cra_list); |
54 | 43 | ||
55 | seq_printf(m, "name : %s\n", alg->cra_name); | 44 | seq_printf(m, "name : %s\n", alg->cra_name); |
56 | seq_printf(m, "driver : %s\n", alg->cra_driver_name); | 45 | seq_printf(m, "driver : %s\n", alg->cra_driver_name); |