diff options
author | Christoph Hellwig <hch@lst.de> | 2018-04-11 05:05:22 -0400 |
---|---|---|
committer | Christoph Hellwig <hch@lst.de> | 2018-05-16 01:24:30 -0400 |
commit | d51269592c327fcfe8ec80fd169a84f8dc0de73b (patch) | |
tree | 0775aaf67c47ea82b20bce6ec375b83c445e663d | |
parent | 7ceed065451aba90cafd9a493c8f62fedd74d457 (diff) |
hostap: switch to proc_create_{seq,single}_data
And use proc private data directly instead of doing a detour
through seq->private.
Signed-off-by: Christoph Hellwig <hch@lst.de>
-rw-r--r-- | drivers/net/wireless/intersil/hostap/hostap_ap.c | 70 | ||||
-rw-r--r-- | drivers/net/wireless/intersil/hostap/hostap_hw.c | 17 | ||||
-rw-r--r-- | drivers/net/wireless/intersil/hostap/hostap_proc.c | 143 |
3 files changed, 39 insertions, 191 deletions
diff --git a/drivers/net/wireless/intersil/hostap/hostap_ap.c b/drivers/net/wireless/intersil/hostap/hostap_ap.c index 4f76f81dd3af..d1884b8913e7 100644 --- a/drivers/net/wireless/intersil/hostap/hostap_ap.c +++ b/drivers/net/wireless/intersil/hostap/hostap_ap.c | |||
@@ -69,7 +69,7 @@ static void prism2_send_mgmt(struct net_device *dev, | |||
69 | #ifndef PRISM2_NO_PROCFS_DEBUG | 69 | #ifndef PRISM2_NO_PROCFS_DEBUG |
70 | static int ap_debug_proc_show(struct seq_file *m, void *v) | 70 | static int ap_debug_proc_show(struct seq_file *m, void *v) |
71 | { | 71 | { |
72 | struct ap_data *ap = m->private; | 72 | struct ap_data *ap = PDE_DATA(file_inode(m->file)); |
73 | 73 | ||
74 | seq_printf(m, "BridgedUnicastFrames=%u\n", ap->bridged_unicast); | 74 | seq_printf(m, "BridgedUnicastFrames=%u\n", ap->bridged_unicast); |
75 | seq_printf(m, "BridgedMulticastFrames=%u\n", ap->bridged_multicast); | 75 | seq_printf(m, "BridgedMulticastFrames=%u\n", ap->bridged_multicast); |
@@ -81,18 +81,6 @@ static int ap_debug_proc_show(struct seq_file *m, void *v) | |||
81 | seq_printf(m, "tx_drop_nonassoc=%u\n", ap->tx_drop_nonassoc); | 81 | seq_printf(m, "tx_drop_nonassoc=%u\n", ap->tx_drop_nonassoc); |
82 | return 0; | 82 | return 0; |
83 | } | 83 | } |
84 | |||
85 | static int ap_debug_proc_open(struct inode *inode, struct file *file) | ||
86 | { | ||
87 | return single_open(file, ap_debug_proc_show, PDE_DATA(inode)); | ||
88 | } | ||
89 | |||
90 | static const struct file_operations ap_debug_proc_fops = { | ||
91 | .open = ap_debug_proc_open, | ||
92 | .read = seq_read, | ||
93 | .llseek = seq_lseek, | ||
94 | .release = single_release, | ||
95 | }; | ||
96 | #endif /* PRISM2_NO_PROCFS_DEBUG */ | 84 | #endif /* PRISM2_NO_PROCFS_DEBUG */ |
97 | 85 | ||
98 | 86 | ||
@@ -333,7 +321,7 @@ void hostap_deauth_all_stas(struct net_device *dev, struct ap_data *ap, | |||
333 | 321 | ||
334 | static int ap_control_proc_show(struct seq_file *m, void *v) | 322 | static int ap_control_proc_show(struct seq_file *m, void *v) |
335 | { | 323 | { |
336 | struct ap_data *ap = m->private; | 324 | struct ap_data *ap = PDE_DATA(file_inode(m->file)); |
337 | char *policy_txt; | 325 | char *policy_txt; |
338 | struct mac_entry *entry; | 326 | struct mac_entry *entry; |
339 | 327 | ||
@@ -365,20 +353,20 @@ static int ap_control_proc_show(struct seq_file *m, void *v) | |||
365 | 353 | ||
366 | static void *ap_control_proc_start(struct seq_file *m, loff_t *_pos) | 354 | static void *ap_control_proc_start(struct seq_file *m, loff_t *_pos) |
367 | { | 355 | { |
368 | struct ap_data *ap = m->private; | 356 | struct ap_data *ap = PDE_DATA(file_inode(m->file)); |
369 | spin_lock_bh(&ap->mac_restrictions.lock); | 357 | spin_lock_bh(&ap->mac_restrictions.lock); |
370 | return seq_list_start_head(&ap->mac_restrictions.mac_list, *_pos); | 358 | return seq_list_start_head(&ap->mac_restrictions.mac_list, *_pos); |
371 | } | 359 | } |
372 | 360 | ||
373 | static void *ap_control_proc_next(struct seq_file *m, void *v, loff_t *_pos) | 361 | static void *ap_control_proc_next(struct seq_file *m, void *v, loff_t *_pos) |
374 | { | 362 | { |
375 | struct ap_data *ap = m->private; | 363 | struct ap_data *ap = PDE_DATA(file_inode(m->file)); |
376 | return seq_list_next(v, &ap->mac_restrictions.mac_list, _pos); | 364 | return seq_list_next(v, &ap->mac_restrictions.mac_list, _pos); |
377 | } | 365 | } |
378 | 366 | ||
379 | static void ap_control_proc_stop(struct seq_file *m, void *v) | 367 | static void ap_control_proc_stop(struct seq_file *m, void *v) |
380 | { | 368 | { |
381 | struct ap_data *ap = m->private; | 369 | struct ap_data *ap = PDE_DATA(file_inode(m->file)); |
382 | spin_unlock_bh(&ap->mac_restrictions.lock); | 370 | spin_unlock_bh(&ap->mac_restrictions.lock); |
383 | } | 371 | } |
384 | 372 | ||
@@ -389,24 +377,6 @@ static const struct seq_operations ap_control_proc_seqops = { | |||
389 | .show = ap_control_proc_show, | 377 | .show = ap_control_proc_show, |
390 | }; | 378 | }; |
391 | 379 | ||
392 | static int ap_control_proc_open(struct inode *inode, struct file *file) | ||
393 | { | ||
394 | int ret = seq_open(file, &ap_control_proc_seqops); | ||
395 | if (ret == 0) { | ||
396 | struct seq_file *m = file->private_data; | ||
397 | m->private = PDE_DATA(inode); | ||
398 | } | ||
399 | return ret; | ||
400 | } | ||
401 | |||
402 | static const struct file_operations ap_control_proc_fops = { | ||
403 | .open = ap_control_proc_open, | ||
404 | .read = seq_read, | ||
405 | .llseek = seq_lseek, | ||
406 | .release = seq_release, | ||
407 | }; | ||
408 | |||
409 | |||
410 | int ap_control_add_mac(struct mac_restrictions *mac_restrictions, u8 *mac) | 380 | int ap_control_add_mac(struct mac_restrictions *mac_restrictions, u8 *mac) |
411 | { | 381 | { |
412 | struct mac_entry *entry; | 382 | struct mac_entry *entry; |
@@ -585,20 +555,20 @@ static int prism2_ap_proc_show(struct seq_file *m, void *v) | |||
585 | 555 | ||
586 | static void *prism2_ap_proc_start(struct seq_file *m, loff_t *_pos) | 556 | static void *prism2_ap_proc_start(struct seq_file *m, loff_t *_pos) |
587 | { | 557 | { |
588 | struct ap_data *ap = m->private; | 558 | struct ap_data *ap = PDE_DATA(file_inode(m->file)); |
589 | spin_lock_bh(&ap->sta_table_lock); | 559 | spin_lock_bh(&ap->sta_table_lock); |
590 | return seq_list_start_head(&ap->sta_list, *_pos); | 560 | return seq_list_start_head(&ap->sta_list, *_pos); |
591 | } | 561 | } |
592 | 562 | ||
593 | static void *prism2_ap_proc_next(struct seq_file *m, void *v, loff_t *_pos) | 563 | static void *prism2_ap_proc_next(struct seq_file *m, void *v, loff_t *_pos) |
594 | { | 564 | { |
595 | struct ap_data *ap = m->private; | 565 | struct ap_data *ap = PDE_DATA(file_inode(m->file)); |
596 | return seq_list_next(v, &ap->sta_list, _pos); | 566 | return seq_list_next(v, &ap->sta_list, _pos); |
597 | } | 567 | } |
598 | 568 | ||
599 | static void prism2_ap_proc_stop(struct seq_file *m, void *v) | 569 | static void prism2_ap_proc_stop(struct seq_file *m, void *v) |
600 | { | 570 | { |
601 | struct ap_data *ap = m->private; | 571 | struct ap_data *ap = PDE_DATA(file_inode(m->file)); |
602 | spin_unlock_bh(&ap->sta_table_lock); | 572 | spin_unlock_bh(&ap->sta_table_lock); |
603 | } | 573 | } |
604 | 574 | ||
@@ -608,23 +578,6 @@ static const struct seq_operations prism2_ap_proc_seqops = { | |||
608 | .stop = prism2_ap_proc_stop, | 578 | .stop = prism2_ap_proc_stop, |
609 | .show = prism2_ap_proc_show, | 579 | .show = prism2_ap_proc_show, |
610 | }; | 580 | }; |
611 | |||
612 | static int prism2_ap_proc_open(struct inode *inode, struct file *file) | ||
613 | { | ||
614 | int ret = seq_open(file, &prism2_ap_proc_seqops); | ||
615 | if (ret == 0) { | ||
616 | struct seq_file *m = file->private_data; | ||
617 | m->private = PDE_DATA(inode); | ||
618 | } | ||
619 | return ret; | ||
620 | } | ||
621 | |||
622 | static const struct file_operations prism2_ap_proc_fops = { | ||
623 | .open = prism2_ap_proc_open, | ||
624 | .read = seq_read, | ||
625 | .llseek = seq_lseek, | ||
626 | .release = seq_release, | ||
627 | }; | ||
628 | #endif /* PRISM2_NO_KERNEL_IEEE80211_MGMT */ | 581 | #endif /* PRISM2_NO_KERNEL_IEEE80211_MGMT */ |
629 | 582 | ||
630 | 583 | ||
@@ -896,12 +849,13 @@ void hostap_init_ap_proc(local_info_t *local) | |||
896 | return; | 849 | return; |
897 | 850 | ||
898 | #ifndef PRISM2_NO_PROCFS_DEBUG | 851 | #ifndef PRISM2_NO_PROCFS_DEBUG |
899 | proc_create_data("ap_debug", 0, ap->proc, &ap_debug_proc_fops, ap); | 852 | proc_create_single_data("ap_debug", 0, ap->proc, ap_debug_proc_show, ap); |
900 | #endif /* PRISM2_NO_PROCFS_DEBUG */ | 853 | #endif /* PRISM2_NO_PROCFS_DEBUG */ |
901 | 854 | ||
902 | #ifndef PRISM2_NO_KERNEL_IEEE80211_MGMT | 855 | #ifndef PRISM2_NO_KERNEL_IEEE80211_MGMT |
903 | proc_create_data("ap_control", 0, ap->proc, &ap_control_proc_fops, ap); | 856 | proc_create_seq_data("ap_control", 0, ap->proc, &ap_control_proc_seqops, |
904 | proc_create_data("ap", 0, ap->proc, &prism2_ap_proc_fops, ap); | 857 | ap); |
858 | proc_create_seq_data("ap", 0, ap->proc, &prism2_ap_proc_seqops, ap); | ||
905 | #endif /* PRISM2_NO_KERNEL_IEEE80211_MGMT */ | 859 | #endif /* PRISM2_NO_KERNEL_IEEE80211_MGMT */ |
906 | 860 | ||
907 | } | 861 | } |
diff --git a/drivers/net/wireless/intersil/hostap/hostap_hw.c b/drivers/net/wireless/intersil/hostap/hostap_hw.c index 5c4a17a18968..2720aa39f530 100644 --- a/drivers/net/wireless/intersil/hostap/hostap_hw.c +++ b/drivers/net/wireless/intersil/hostap/hostap_hw.c | |||
@@ -2951,19 +2951,6 @@ static int prism2_registers_proc_show(struct seq_file *m, void *v) | |||
2951 | 2951 | ||
2952 | return 0; | 2952 | return 0; |
2953 | } | 2953 | } |
2954 | |||
2955 | static int prism2_registers_proc_open(struct inode *inode, struct file *file) | ||
2956 | { | ||
2957 | return single_open(file, prism2_registers_proc_show, PDE_DATA(inode)); | ||
2958 | } | ||
2959 | |||
2960 | static const struct file_operations prism2_registers_proc_fops = { | ||
2961 | .open = prism2_registers_proc_open, | ||
2962 | .read = seq_read, | ||
2963 | .llseek = seq_lseek, | ||
2964 | .release = single_release, | ||
2965 | }; | ||
2966 | |||
2967 | #endif /* PRISM2_NO_PROCFS_DEBUG */ | 2954 | #endif /* PRISM2_NO_PROCFS_DEBUG */ |
2968 | 2955 | ||
2969 | 2956 | ||
@@ -3279,8 +3266,8 @@ static int hostap_hw_ready(struct net_device *dev) | |||
3279 | } | 3266 | } |
3280 | hostap_init_proc(local); | 3267 | hostap_init_proc(local); |
3281 | #ifndef PRISM2_NO_PROCFS_DEBUG | 3268 | #ifndef PRISM2_NO_PROCFS_DEBUG |
3282 | proc_create_data("registers", 0, local->proc, | 3269 | proc_create_single_data("registers", 0, local->proc, |
3283 | &prism2_registers_proc_fops, local); | 3270 | prism2_registers_proc_show, local); |
3284 | #endif /* PRISM2_NO_PROCFS_DEBUG */ | 3271 | #endif /* PRISM2_NO_PROCFS_DEBUG */ |
3285 | hostap_init_ap_proc(local); | 3272 | hostap_init_ap_proc(local); |
3286 | return 0; | 3273 | return 0; |
diff --git a/drivers/net/wireless/intersil/hostap/hostap_proc.c b/drivers/net/wireless/intersil/hostap/hostap_proc.c index d234231bf532..5b33ccab9188 100644 --- a/drivers/net/wireless/intersil/hostap/hostap_proc.c +++ b/drivers/net/wireless/intersil/hostap/hostap_proc.c | |||
@@ -43,18 +43,6 @@ static int prism2_debug_proc_show(struct seq_file *m, void *v) | |||
43 | 43 | ||
44 | return 0; | 44 | return 0; |
45 | } | 45 | } |
46 | |||
47 | static int prism2_debug_proc_open(struct inode *inode, struct file *file) | ||
48 | { | ||
49 | return single_open(file, prism2_debug_proc_show, PDE_DATA(inode)); | ||
50 | } | ||
51 | |||
52 | static const struct file_operations prism2_debug_proc_fops = { | ||
53 | .open = prism2_debug_proc_open, | ||
54 | .read = seq_read, | ||
55 | .llseek = seq_lseek, | ||
56 | .release = single_release, | ||
57 | }; | ||
58 | #endif /* PRISM2_NO_PROCFS_DEBUG */ | 46 | #endif /* PRISM2_NO_PROCFS_DEBUG */ |
59 | 47 | ||
60 | 48 | ||
@@ -95,19 +83,6 @@ static int prism2_stats_proc_show(struct seq_file *m, void *v) | |||
95 | return 0; | 83 | return 0; |
96 | } | 84 | } |
97 | 85 | ||
98 | static int prism2_stats_proc_open(struct inode *inode, struct file *file) | ||
99 | { | ||
100 | return single_open(file, prism2_stats_proc_show, PDE_DATA(inode)); | ||
101 | } | ||
102 | |||
103 | static const struct file_operations prism2_stats_proc_fops = { | ||
104 | .open = prism2_stats_proc_open, | ||
105 | .read = seq_read, | ||
106 | .llseek = seq_lseek, | ||
107 | .release = single_release, | ||
108 | }; | ||
109 | |||
110 | |||
111 | static int prism2_wds_proc_show(struct seq_file *m, void *v) | 86 | static int prism2_wds_proc_show(struct seq_file *m, void *v) |
112 | { | 87 | { |
113 | struct list_head *ptr = v; | 88 | struct list_head *ptr = v; |
@@ -122,20 +97,20 @@ static int prism2_wds_proc_show(struct seq_file *m, void *v) | |||
122 | 97 | ||
123 | static void *prism2_wds_proc_start(struct seq_file *m, loff_t *_pos) | 98 | static void *prism2_wds_proc_start(struct seq_file *m, loff_t *_pos) |
124 | { | 99 | { |
125 | local_info_t *local = m->private; | 100 | local_info_t *local = PDE_DATA(file_inode(m->file)); |
126 | read_lock_bh(&local->iface_lock); | 101 | read_lock_bh(&local->iface_lock); |
127 | return seq_list_start(&local->hostap_interfaces, *_pos); | 102 | return seq_list_start(&local->hostap_interfaces, *_pos); |
128 | } | 103 | } |
129 | 104 | ||
130 | static void *prism2_wds_proc_next(struct seq_file *m, void *v, loff_t *_pos) | 105 | static void *prism2_wds_proc_next(struct seq_file *m, void *v, loff_t *_pos) |
131 | { | 106 | { |
132 | local_info_t *local = m->private; | 107 | local_info_t *local = PDE_DATA(file_inode(m->file)); |
133 | return seq_list_next(v, &local->hostap_interfaces, _pos); | 108 | return seq_list_next(v, &local->hostap_interfaces, _pos); |
134 | } | 109 | } |
135 | 110 | ||
136 | static void prism2_wds_proc_stop(struct seq_file *m, void *v) | 111 | static void prism2_wds_proc_stop(struct seq_file *m, void *v) |
137 | { | 112 | { |
138 | local_info_t *local = m->private; | 113 | local_info_t *local = PDE_DATA(file_inode(m->file)); |
139 | read_unlock_bh(&local->iface_lock); | 114 | read_unlock_bh(&local->iface_lock); |
140 | } | 115 | } |
141 | 116 | ||
@@ -146,27 +121,9 @@ static const struct seq_operations prism2_wds_proc_seqops = { | |||
146 | .show = prism2_wds_proc_show, | 121 | .show = prism2_wds_proc_show, |
147 | }; | 122 | }; |
148 | 123 | ||
149 | static int prism2_wds_proc_open(struct inode *inode, struct file *file) | ||
150 | { | ||
151 | int ret = seq_open(file, &prism2_wds_proc_seqops); | ||
152 | if (ret == 0) { | ||
153 | struct seq_file *m = file->private_data; | ||
154 | m->private = PDE_DATA(inode); | ||
155 | } | ||
156 | return ret; | ||
157 | } | ||
158 | |||
159 | static const struct file_operations prism2_wds_proc_fops = { | ||
160 | .open = prism2_wds_proc_open, | ||
161 | .read = seq_read, | ||
162 | .llseek = seq_lseek, | ||
163 | .release = seq_release, | ||
164 | }; | ||
165 | |||
166 | |||
167 | static int prism2_bss_list_proc_show(struct seq_file *m, void *v) | 124 | static int prism2_bss_list_proc_show(struct seq_file *m, void *v) |
168 | { | 125 | { |
169 | local_info_t *local = m->private; | 126 | local_info_t *local = PDE_DATA(file_inode(m->file)); |
170 | struct list_head *ptr = v; | 127 | struct list_head *ptr = v; |
171 | struct hostap_bss_info *bss; | 128 | struct hostap_bss_info *bss; |
172 | 129 | ||
@@ -193,20 +150,20 @@ static int prism2_bss_list_proc_show(struct seq_file *m, void *v) | |||
193 | 150 | ||
194 | static void *prism2_bss_list_proc_start(struct seq_file *m, loff_t *_pos) | 151 | static void *prism2_bss_list_proc_start(struct seq_file *m, loff_t *_pos) |
195 | { | 152 | { |
196 | local_info_t *local = m->private; | 153 | local_info_t *local = PDE_DATA(file_inode(m->file)); |
197 | spin_lock_bh(&local->lock); | 154 | spin_lock_bh(&local->lock); |
198 | return seq_list_start_head(&local->bss_list, *_pos); | 155 | return seq_list_start_head(&local->bss_list, *_pos); |
199 | } | 156 | } |
200 | 157 | ||
201 | static void *prism2_bss_list_proc_next(struct seq_file *m, void *v, loff_t *_pos) | 158 | static void *prism2_bss_list_proc_next(struct seq_file *m, void *v, loff_t *_pos) |
202 | { | 159 | { |
203 | local_info_t *local = m->private; | 160 | local_info_t *local = PDE_DATA(file_inode(m->file)); |
204 | return seq_list_next(v, &local->bss_list, _pos); | 161 | return seq_list_next(v, &local->bss_list, _pos); |
205 | } | 162 | } |
206 | 163 | ||
207 | static void prism2_bss_list_proc_stop(struct seq_file *m, void *v) | 164 | static void prism2_bss_list_proc_stop(struct seq_file *m, void *v) |
208 | { | 165 | { |
209 | local_info_t *local = m->private; | 166 | local_info_t *local = PDE_DATA(file_inode(m->file)); |
210 | spin_unlock_bh(&local->lock); | 167 | spin_unlock_bh(&local->lock); |
211 | } | 168 | } |
212 | 169 | ||
@@ -217,24 +174,6 @@ static const struct seq_operations prism2_bss_list_proc_seqops = { | |||
217 | .show = prism2_bss_list_proc_show, | 174 | .show = prism2_bss_list_proc_show, |
218 | }; | 175 | }; |
219 | 176 | ||
220 | static int prism2_bss_list_proc_open(struct inode *inode, struct file *file) | ||
221 | { | ||
222 | int ret = seq_open(file, &prism2_bss_list_proc_seqops); | ||
223 | if (ret == 0) { | ||
224 | struct seq_file *m = file->private_data; | ||
225 | m->private = PDE_DATA(inode); | ||
226 | } | ||
227 | return ret; | ||
228 | } | ||
229 | |||
230 | static const struct file_operations prism2_bss_list_proc_fops = { | ||
231 | .open = prism2_bss_list_proc_open, | ||
232 | .read = seq_read, | ||
233 | .llseek = seq_lseek, | ||
234 | .release = seq_release, | ||
235 | }; | ||
236 | |||
237 | |||
238 | static int prism2_crypt_proc_show(struct seq_file *m, void *v) | 177 | static int prism2_crypt_proc_show(struct seq_file *m, void *v) |
239 | { | 178 | { |
240 | local_info_t *local = m->private; | 179 | local_info_t *local = m->private; |
@@ -252,19 +191,6 @@ static int prism2_crypt_proc_show(struct seq_file *m, void *v) | |||
252 | return 0; | 191 | return 0; |
253 | } | 192 | } |
254 | 193 | ||
255 | static int prism2_crypt_proc_open(struct inode *inode, struct file *file) | ||
256 | { | ||
257 | return single_open(file, prism2_crypt_proc_show, PDE_DATA(inode)); | ||
258 | } | ||
259 | |||
260 | static const struct file_operations prism2_crypt_proc_fops = { | ||
261 | .open = prism2_crypt_proc_open, | ||
262 | .read = seq_read, | ||
263 | .llseek = seq_lseek, | ||
264 | .release = single_release, | ||
265 | }; | ||
266 | |||
267 | |||
268 | static ssize_t prism2_pda_proc_read(struct file *file, char __user *buf, | 194 | static ssize_t prism2_pda_proc_read(struct file *file, char __user *buf, |
269 | size_t count, loff_t *_pos) | 195 | size_t count, loff_t *_pos) |
270 | { | 196 | { |
@@ -342,7 +268,7 @@ static int prism2_io_debug_proc_read(char *page, char **start, off_t off, | |||
342 | #ifndef PRISM2_NO_STATION_MODES | 268 | #ifndef PRISM2_NO_STATION_MODES |
343 | static int prism2_scan_results_proc_show(struct seq_file *m, void *v) | 269 | static int prism2_scan_results_proc_show(struct seq_file *m, void *v) |
344 | { | 270 | { |
345 | local_info_t *local = m->private; | 271 | local_info_t *local = PDE_DATA(file_inode(m->file)); |
346 | unsigned long entry; | 272 | unsigned long entry; |
347 | int i, len; | 273 | int i, len; |
348 | struct hfa384x_hostscan_result *scanres; | 274 | struct hfa384x_hostscan_result *scanres; |
@@ -392,7 +318,7 @@ static int prism2_scan_results_proc_show(struct seq_file *m, void *v) | |||
392 | 318 | ||
393 | static void *prism2_scan_results_proc_start(struct seq_file *m, loff_t *_pos) | 319 | static void *prism2_scan_results_proc_start(struct seq_file *m, loff_t *_pos) |
394 | { | 320 | { |
395 | local_info_t *local = m->private; | 321 | local_info_t *local = PDE_DATA(file_inode(m->file)); |
396 | spin_lock_bh(&local->lock); | 322 | spin_lock_bh(&local->lock); |
397 | 323 | ||
398 | /* We have a header (pos 0) + N results to show (pos 1...N) */ | 324 | /* We have a header (pos 0) + N results to show (pos 1...N) */ |
@@ -403,7 +329,7 @@ static void *prism2_scan_results_proc_start(struct seq_file *m, loff_t *_pos) | |||
403 | 329 | ||
404 | static void *prism2_scan_results_proc_next(struct seq_file *m, void *v, loff_t *_pos) | 330 | static void *prism2_scan_results_proc_next(struct seq_file *m, void *v, loff_t *_pos) |
405 | { | 331 | { |
406 | local_info_t *local = m->private; | 332 | local_info_t *local = PDE_DATA(file_inode(m->file)); |
407 | 333 | ||
408 | ++*_pos; | 334 | ++*_pos; |
409 | if (*_pos > local->last_scan_results_count) | 335 | if (*_pos > local->last_scan_results_count) |
@@ -413,7 +339,7 @@ static void *prism2_scan_results_proc_next(struct seq_file *m, void *v, loff_t * | |||
413 | 339 | ||
414 | static void prism2_scan_results_proc_stop(struct seq_file *m, void *v) | 340 | static void prism2_scan_results_proc_stop(struct seq_file *m, void *v) |
415 | { | 341 | { |
416 | local_info_t *local = m->private; | 342 | local_info_t *local = PDE_DATA(file_inode(m->file)); |
417 | spin_unlock_bh(&local->lock); | 343 | spin_unlock_bh(&local->lock); |
418 | } | 344 | } |
419 | 345 | ||
@@ -423,25 +349,6 @@ static const struct seq_operations prism2_scan_results_proc_seqops = { | |||
423 | .stop = prism2_scan_results_proc_stop, | 349 | .stop = prism2_scan_results_proc_stop, |
424 | .show = prism2_scan_results_proc_show, | 350 | .show = prism2_scan_results_proc_show, |
425 | }; | 351 | }; |
426 | |||
427 | static int prism2_scan_results_proc_open(struct inode *inode, struct file *file) | ||
428 | { | ||
429 | int ret = seq_open(file, &prism2_scan_results_proc_seqops); | ||
430 | if (ret == 0) { | ||
431 | struct seq_file *m = file->private_data; | ||
432 | m->private = PDE_DATA(inode); | ||
433 | } | ||
434 | return ret; | ||
435 | } | ||
436 | |||
437 | static const struct file_operations prism2_scan_results_proc_fops = { | ||
438 | .open = prism2_scan_results_proc_open, | ||
439 | .read = seq_read, | ||
440 | .llseek = seq_lseek, | ||
441 | .release = seq_release, | ||
442 | }; | ||
443 | |||
444 | |||
445 | #endif /* PRISM2_NO_STATION_MODES */ | 352 | #endif /* PRISM2_NO_STATION_MODES */ |
446 | 353 | ||
447 | 354 | ||
@@ -463,29 +370,29 @@ void hostap_init_proc(local_info_t *local) | |||
463 | } | 370 | } |
464 | 371 | ||
465 | #ifndef PRISM2_NO_PROCFS_DEBUG | 372 | #ifndef PRISM2_NO_PROCFS_DEBUG |
466 | proc_create_data("debug", 0, local->proc, | 373 | proc_create_single_data("debug", 0, local->proc, |
467 | &prism2_debug_proc_fops, local); | 374 | prism2_debug_proc_show, local); |
468 | #endif /* PRISM2_NO_PROCFS_DEBUG */ | 375 | #endif /* PRISM2_NO_PROCFS_DEBUG */ |
469 | proc_create_data("stats", 0, local->proc, | 376 | proc_create_single_data("stats", 0, local->proc, prism2_stats_proc_show, |
470 | &prism2_stats_proc_fops, local); | 377 | local); |
471 | proc_create_data("wds", 0, local->proc, | 378 | proc_create_seq_data("wds", 0, local->proc, |
472 | &prism2_wds_proc_fops, local); | 379 | &prism2_wds_proc_seqops, local); |
473 | proc_create_data("pda", 0, local->proc, | 380 | proc_create_data("pda", 0, local->proc, |
474 | &prism2_pda_proc_fops, local); | 381 | &prism2_pda_proc_fops, local); |
475 | proc_create_data("aux_dump", 0, local->proc, | 382 | proc_create_data("aux_dump", 0, local->proc, |
476 | local->func->read_aux_fops ?: &prism2_aux_dump_proc_fops, | 383 | local->func->read_aux_fops ?: &prism2_aux_dump_proc_fops, |
477 | local); | 384 | local); |
478 | proc_create_data("bss_list", 0, local->proc, | 385 | proc_create_seq_data("bss_list", 0, local->proc, |
479 | &prism2_bss_list_proc_fops, local); | 386 | &prism2_bss_list_proc_seqops, local); |
480 | proc_create_data("crypt", 0, local->proc, | 387 | proc_create_single_data("crypt", 0, local->proc, prism2_crypt_proc_show, |
481 | &prism2_crypt_proc_fops, local); | 388 | local); |
482 | #ifdef PRISM2_IO_DEBUG | 389 | #ifdef PRISM2_IO_DEBUG |
483 | proc_create_data("io_debug", 0, local->proc, | 390 | proc_create_single_data("io_debug", 0, local->proc, |
484 | &prism2_io_debug_proc_fops, local); | 391 | prism2_debug_proc_show, local); |
485 | #endif /* PRISM2_IO_DEBUG */ | 392 | #endif /* PRISM2_IO_DEBUG */ |
486 | #ifndef PRISM2_NO_STATION_MODES | 393 | #ifndef PRISM2_NO_STATION_MODES |
487 | proc_create_data("scan_results", 0, local->proc, | 394 | proc_create_seq_data("scan_results", 0, local->proc, |
488 | &prism2_scan_results_proc_fops, local); | 395 | &prism2_scan_results_proc_seqops, local); |
489 | #endif /* PRISM2_NO_STATION_MODES */ | 396 | #endif /* PRISM2_NO_STATION_MODES */ |
490 | } | 397 | } |
491 | 398 | ||