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); |
