aboutsummaryrefslogtreecommitdiffstats
path: root/crypto/proc.c
diff options
context:
space:
mode:
Diffstat (limited to 'crypto/proc.c')
-rw-r--r--crypto/proc.c17
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
24static void *c_start(struct seq_file *m, loff_t *pos) 24static 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
36static void *c_next(struct seq_file *m, void *p, loff_t *pos) 30static 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
46static void c_stop(struct seq_file *m, void *p) 35static 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
51static int c_show(struct seq_file *m, void *p) 40static 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);