diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2013-05-05 13:35:26 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-05-05 13:35:26 -0400 |
commit | 24d0c2542b38963ae4d5171ecc0a2c1326c656bc (patch) | |
tree | 1d7de3d2f79f65c34e8f29d7bb6fe5ed512b226c | |
parent | 802d0db827eaa5a34dd655623c71134ec63d8c3f (diff) | |
parent | 7ee2b9e56495c56dcaffa2bab19b39451d9fdc8a (diff) |
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
Pull single_open() leak fixes from Al Viro:
"A bunch of fixes for a moderately common class of bugs: file with
single_open() done by its ->open() and seq_release as its ->release().
That leaks; fortunately, it's not _too_ common (either people manage
to RTFM that says "When using single_open(), the programmer should use
single_release() instead of seq_release() in the file_operations
structure to avoid a memory leak", or they just copy a correct
instance), but grepping through the tree has caught quite a pile.
All of that is, AFAICS, -stable fodder, for as far as the patches
apply. I tried to carve it up into reasonably-sized pieces (more or
less "comes from the same tree")"
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
rcutrace: single_open() leaks
gadget: single_open() leaks
staging: single_open() leaks
megaraid: single_open() leak
wireless: single_open() leaks
input: single_open() leak
rtc: single_open() leaks
ds1620: single_open() leak
sh: single_open() leaks
parisc: single_open() leaks
mips: single_open() leaks
ia64: single_open() leaks
h8300: single_open() leaks
cris: single_open() leaks
arm: single_open() leaks
33 files changed, 41 insertions, 41 deletions
diff --git a/arch/arm/kernel/swp_emulate.c b/arch/arm/kernel/swp_emulate.c index 087fc321e9e5..b1b89882b113 100644 --- a/arch/arm/kernel/swp_emulate.c +++ b/arch/arm/kernel/swp_emulate.c | |||
@@ -99,7 +99,7 @@ static const struct file_operations proc_status_fops = { | |||
99 | .open = proc_status_open, | 99 | .open = proc_status_open, |
100 | .read = seq_read, | 100 | .read = seq_read, |
101 | .llseek = seq_lseek, | 101 | .llseek = seq_lseek, |
102 | .release = seq_release, | 102 | .release = single_release, |
103 | }; | 103 | }; |
104 | #endif | 104 | #endif |
105 | 105 | ||
diff --git a/arch/arm/mach-omap1/pm.c b/arch/arm/mach-omap1/pm.c index dd712f109738..358b82cb9f78 100644 --- a/arch/arm/mach-omap1/pm.c +++ b/arch/arm/mach-omap1/pm.c | |||
@@ -557,7 +557,7 @@ static const struct file_operations omap_pm_debug_fops = { | |||
557 | .open = omap_pm_debug_open, | 557 | .open = omap_pm_debug_open, |
558 | .read = seq_read, | 558 | .read = seq_read, |
559 | .llseek = seq_lseek, | 559 | .llseek = seq_lseek, |
560 | .release = seq_release, | 560 | .release = single_release, |
561 | }; | 561 | }; |
562 | 562 | ||
563 | static void omap_pm_init_debugfs(void) | 563 | static void omap_pm_init_debugfs(void) |
diff --git a/arch/cris/arch-v10/kernel/fasttimer.c b/arch/cris/arch-v10/kernel/fasttimer.c index ce6f512968a4..48a59afbeeb1 100644 --- a/arch/cris/arch-v10/kernel/fasttimer.c +++ b/arch/cris/arch-v10/kernel/fasttimer.c | |||
@@ -644,7 +644,7 @@ static const struct file_operations proc_fasttimer_fops = { | |||
644 | .open = proc_fasttimer_open, | 644 | .open = proc_fasttimer_open, |
645 | .read = seq_read, | 645 | .read = seq_read, |
646 | .llseek = seq_lseek, | 646 | .llseek = seq_lseek, |
647 | .release = seq_release, | 647 | .release = single_release, |
648 | }; | 648 | }; |
649 | #endif /* PROC_FS */ | 649 | #endif /* PROC_FS */ |
650 | 650 | ||
diff --git a/arch/cris/arch-v32/kernel/fasttimer.c b/arch/cris/arch-v32/kernel/fasttimer.c index e43dd70acd96..f6644535b17e 100644 --- a/arch/cris/arch-v32/kernel/fasttimer.c +++ b/arch/cris/arch-v32/kernel/fasttimer.c | |||
@@ -616,7 +616,7 @@ static const struct file_operations proc_fasttimer_fops = { | |||
616 | .open = proc_fasttimer_open, | 616 | .open = proc_fasttimer_open, |
617 | .read = seq_read, | 617 | .read = seq_read, |
618 | .llseek = seq_lseek, | 618 | .llseek = seq_lseek, |
619 | .release = seq_release, | 619 | .release = single_release, |
620 | }; | 620 | }; |
621 | 621 | ||
622 | #endif /* PROC_FS */ | 622 | #endif /* PROC_FS */ |
diff --git a/arch/h8300/kernel/gpio.c b/arch/h8300/kernel/gpio.c index b02c752cd326..084bfd0c107e 100644 --- a/arch/h8300/kernel/gpio.c +++ b/arch/h8300/kernel/gpio.c | |||
@@ -161,7 +161,7 @@ static const struct file_operations gpio_proc_fops = { | |||
161 | .open = gpio_proc_open, | 161 | .open = gpio_proc_open, |
162 | .read = seq_read, | 162 | .read = seq_read, |
163 | .llseek = seq_lseek, | 163 | .llseek = seq_lseek, |
164 | .release = seq_release, | 164 | .release = single_release, |
165 | }; | 165 | }; |
166 | 166 | ||
167 | static __init int register_proc(void) | 167 | static __init int register_proc(void) |
diff --git a/arch/ia64/kernel/palinfo.c b/arch/ia64/kernel/palinfo.c index b17129e3b7c8..2b3c2d79256f 100644 --- a/arch/ia64/kernel/palinfo.c +++ b/arch/ia64/kernel/palinfo.c | |||
@@ -929,7 +929,7 @@ static const struct file_operations proc_palinfo_fops = { | |||
929 | .open = proc_palinfo_open, | 929 | .open = proc_palinfo_open, |
930 | .read = seq_read, | 930 | .read = seq_read, |
931 | .llseek = seq_lseek, | 931 | .llseek = seq_lseek, |
932 | .release = seq_release, | 932 | .release = single_release, |
933 | }; | 933 | }; |
934 | 934 | ||
935 | static void __cpuinit | 935 | static void __cpuinit |
diff --git a/arch/ia64/kernel/salinfo.c b/arch/ia64/kernel/salinfo.c index 5035245cb258..4bc580af67b3 100644 --- a/arch/ia64/kernel/salinfo.c +++ b/arch/ia64/kernel/salinfo.c | |||
@@ -694,7 +694,7 @@ static const struct file_operations proc_salinfo_fops = { | |||
694 | .open = proc_salinfo_open, | 694 | .open = proc_salinfo_open, |
695 | .read = seq_read, | 695 | .read = seq_read, |
696 | .llseek = seq_lseek, | 696 | .llseek = seq_lseek, |
697 | .release = seq_release, | 697 | .release = single_release, |
698 | }; | 698 | }; |
699 | 699 | ||
700 | module_init(salinfo_init); | 700 | module_init(salinfo_init); |
diff --git a/arch/ia64/sn/kernel/sn2/prominfo_proc.c b/arch/ia64/sn/kernel/sn2/prominfo_proc.c index daa8d6badb16..ec4de2b09653 100644 --- a/arch/ia64/sn/kernel/sn2/prominfo_proc.c +++ b/arch/ia64/sn/kernel/sn2/prominfo_proc.c | |||
@@ -149,7 +149,7 @@ static const struct file_operations proc_fit_fops = { | |||
149 | .open = proc_fit_open, | 149 | .open = proc_fit_open, |
150 | .read = seq_read, | 150 | .read = seq_read, |
151 | .llseek = seq_lseek, | 151 | .llseek = seq_lseek, |
152 | .release = seq_release, | 152 | .release = single_release, |
153 | }; | 153 | }; |
154 | 154 | ||
155 | static int proc_version_show(struct seq_file *m, void *v) | 155 | static int proc_version_show(struct seq_file *m, void *v) |
@@ -183,7 +183,7 @@ static const struct file_operations proc_version_fops = { | |||
183 | .open = proc_version_open, | 183 | .open = proc_version_open, |
184 | .read = seq_read, | 184 | .read = seq_read, |
185 | .llseek = seq_lseek, | 185 | .llseek = seq_lseek, |
186 | .release = seq_release, | 186 | .release = single_release, |
187 | }; | 187 | }; |
188 | 188 | ||
189 | /* module entry points */ | 189 | /* module entry points */ |
diff --git a/arch/mips/kernel/smtc-proc.c b/arch/mips/kernel/smtc-proc.c index 9fb714450e95..c10aa84c9fa9 100644 --- a/arch/mips/kernel/smtc-proc.c +++ b/arch/mips/kernel/smtc-proc.c | |||
@@ -61,7 +61,7 @@ static const struct file_operations smtc_proc_fops = { | |||
61 | .open = smtc_proc_open, | 61 | .open = smtc_proc_open, |
62 | .read = seq_read, | 62 | .read = seq_read, |
63 | .llseek = seq_lseek, | 63 | .llseek = seq_lseek, |
64 | .release = seq_release, | 64 | .release = single_release, |
65 | }; | 65 | }; |
66 | 66 | ||
67 | void init_smtc_stats(void) | 67 | void init_smtc_stats(void) |
diff --git a/arch/mips/pci/ops-pmcmsp.c b/arch/mips/pci/ops-pmcmsp.c index 4eaab6327369..3d27800edba2 100644 --- a/arch/mips/pci/ops-pmcmsp.c +++ b/arch/mips/pci/ops-pmcmsp.c | |||
@@ -92,7 +92,7 @@ static const struct file_operations msp_pci_rd_cnt_fops = { | |||
92 | .open = msp_pci_rd_cnt_open, | 92 | .open = msp_pci_rd_cnt_open, |
93 | .read = seq_read, | 93 | .read = seq_read, |
94 | .llseek = seq_lseek, | 94 | .llseek = seq_lseek, |
95 | .release = seq_release, | 95 | .release = single_release, |
96 | }; | 96 | }; |
97 | 97 | ||
98 | /***************************************************************************** | 98 | /***************************************************************************** |
@@ -169,7 +169,7 @@ static const struct file_operations gen_pci_cfg_wr_fops = { | |||
169 | .open = gen_pci_cfg_wr_open, | 169 | .open = gen_pci_cfg_wr_open, |
170 | .read = seq_read, | 170 | .read = seq_read, |
171 | .llseek = seq_lseek, | 171 | .llseek = seq_lseek, |
172 | .release = seq_release, | 172 | .release = single_release, |
173 | }; | 173 | }; |
174 | 174 | ||
175 | /***************************************************************************** | 175 | /***************************************************************************** |
diff --git a/arch/mips/sibyte/sb1250/bus_watcher.c b/arch/mips/sibyte/sb1250/bus_watcher.c index cb1e3cb37d70..8871e3345bff 100644 --- a/arch/mips/sibyte/sb1250/bus_watcher.c +++ b/arch/mips/sibyte/sb1250/bus_watcher.c | |||
@@ -145,7 +145,7 @@ static const struct file_operations bw_proc_fops = { | |||
145 | .open = bw_proc_open, | 145 | .open = bw_proc_open, |
146 | .read = seq_read, | 146 | .read = seq_read, |
147 | .llseek = seq_lseek, | 147 | .llseek = seq_lseek, |
148 | .release = seq_release, | 148 | .release = single_release, |
149 | }; | 149 | }; |
150 | 150 | ||
151 | static void create_proc_decoder(struct bw_stats_struct *stats) | 151 | static void create_proc_decoder(struct bw_stats_struct *stats) |
diff --git a/arch/parisc/kernel/pdc_chassis.c b/arch/parisc/kernel/pdc_chassis.c index 8fa314fbfb18..3e04242de5a7 100644 --- a/arch/parisc/kernel/pdc_chassis.c +++ b/arch/parisc/kernel/pdc_chassis.c | |||
@@ -275,7 +275,7 @@ static const struct file_operations pdc_chassis_warn_fops = { | |||
275 | .open = pdc_chassis_warn_open, | 275 | .open = pdc_chassis_warn_open, |
276 | .read = seq_read, | 276 | .read = seq_read, |
277 | .llseek = seq_lseek, | 277 | .llseek = seq_lseek, |
278 | .release = seq_release, | 278 | .release = single_release, |
279 | }; | 279 | }; |
280 | 280 | ||
281 | static int __init pdc_chassis_create_procfs(void) | 281 | static int __init pdc_chassis_create_procfs(void) |
diff --git a/arch/sh/drivers/dma/dma-api.c b/arch/sh/drivers/dma/dma-api.c index 851e5106e580..c0eec08d8f95 100644 --- a/arch/sh/drivers/dma/dma-api.c +++ b/arch/sh/drivers/dma/dma-api.c | |||
@@ -348,7 +348,7 @@ static const struct file_operations dma_proc_fops = { | |||
348 | .open = dma_proc_open, | 348 | .open = dma_proc_open, |
349 | .read = seq_read, | 349 | .read = seq_read, |
350 | .llseek = seq_lseek, | 350 | .llseek = seq_lseek, |
351 | .release = seq_release, | 351 | .release = single_release, |
352 | }; | 352 | }; |
353 | 353 | ||
354 | int register_dmac(struct dma_info *info) | 354 | int register_dmac(struct dma_info *info) |
diff --git a/drivers/char/ds1620.c b/drivers/char/ds1620.c index 544b4ce617f8..0fae5296e311 100644 --- a/drivers/char/ds1620.c +++ b/drivers/char/ds1620.c | |||
@@ -355,7 +355,7 @@ static const struct file_operations ds1620_proc_therm_fops = { | |||
355 | .open = ds1620_proc_therm_open, | 355 | .open = ds1620_proc_therm_open, |
356 | .read = seq_read, | 356 | .read = seq_read, |
357 | .llseek = seq_lseek, | 357 | .llseek = seq_lseek, |
358 | .release = seq_release, | 358 | .release = single_release, |
359 | }; | 359 | }; |
360 | #endif | 360 | #endif |
361 | 361 | ||
diff --git a/drivers/char/efirtc.c b/drivers/char/efirtc.c index ea54a6e3f5ad..e39e7402e623 100644 --- a/drivers/char/efirtc.c +++ b/drivers/char/efirtc.c | |||
@@ -369,7 +369,7 @@ static const struct file_operations efi_rtc_proc_fops = { | |||
369 | .open = efi_rtc_proc_open, | 369 | .open = efi_rtc_proc_open, |
370 | .read = seq_read, | 370 | .read = seq_read, |
371 | .llseek = seq_lseek, | 371 | .llseek = seq_lseek, |
372 | .release = seq_release, | 372 | .release = single_release, |
373 | }; | 373 | }; |
374 | 374 | ||
375 | static int __init | 375 | static int __init |
diff --git a/drivers/char/genrtc.c b/drivers/char/genrtc.c index bc9b84d56ee4..4f943759d376 100644 --- a/drivers/char/genrtc.c +++ b/drivers/char/genrtc.c | |||
@@ -465,7 +465,7 @@ static const struct file_operations gen_rtc_proc_fops = { | |||
465 | .open = gen_rtc_proc_open, | 465 | .open = gen_rtc_proc_open, |
466 | .read = seq_read, | 466 | .read = seq_read, |
467 | .llseek = seq_lseek, | 467 | .llseek = seq_lseek, |
468 | .release = seq_release, | 468 | .release = single_release, |
469 | }; | 469 | }; |
470 | 470 | ||
471 | static int __init gen_rtc_proc_init(void) | 471 | static int __init gen_rtc_proc_init(void) |
diff --git a/drivers/input/misc/hp_sdc_rtc.c b/drivers/input/misc/hp_sdc_rtc.c index 770479df8657..86b822806e95 100644 --- a/drivers/input/misc/hp_sdc_rtc.c +++ b/drivers/input/misc/hp_sdc_rtc.c | |||
@@ -515,7 +515,7 @@ static const struct file_operations hp_sdc_rtc_proc_fops = { | |||
515 | .open = hp_sdc_rtc_proc_open, | 515 | .open = hp_sdc_rtc_proc_open, |
516 | .read = seq_read, | 516 | .read = seq_read, |
517 | .llseek = seq_lseek, | 517 | .llseek = seq_lseek, |
518 | .release = seq_release, | 518 | .release = single_release, |
519 | }; | 519 | }; |
520 | 520 | ||
521 | static int hp_sdc_rtc_ioctl(struct file *file, | 521 | static int hp_sdc_rtc_ioctl(struct file *file, |
diff --git a/drivers/net/wireless/atmel.c b/drivers/net/wireless/atmel.c index 23a3498f14d4..830bb1d1f957 100644 --- a/drivers/net/wireless/atmel.c +++ b/drivers/net/wireless/atmel.c | |||
@@ -1502,7 +1502,7 @@ static const struct file_operations atmel_proc_fops = { | |||
1502 | .open = atmel_proc_open, | 1502 | .open = atmel_proc_open, |
1503 | .read = seq_read, | 1503 | .read = seq_read, |
1504 | .llseek = seq_lseek, | 1504 | .llseek = seq_lseek, |
1505 | .release = seq_release, | 1505 | .release = single_release, |
1506 | }; | 1506 | }; |
1507 | 1507 | ||
1508 | static const struct net_device_ops atmel_netdev_ops = { | 1508 | static const struct net_device_ops atmel_netdev_ops = { |
diff --git a/drivers/net/wireless/hostap/hostap_ap.c b/drivers/net/wireless/hostap/hostap_ap.c index 19c45e363aa7..d6033a8e5dea 100644 --- a/drivers/net/wireless/hostap/hostap_ap.c +++ b/drivers/net/wireless/hostap/hostap_ap.c | |||
@@ -89,7 +89,7 @@ static const struct file_operations ap_debug_proc_fops = { | |||
89 | .open = ap_debug_proc_open, | 89 | .open = ap_debug_proc_open, |
90 | .read = seq_read, | 90 | .read = seq_read, |
91 | .llseek = seq_lseek, | 91 | .llseek = seq_lseek, |
92 | .release = seq_release, | 92 | .release = single_release, |
93 | }; | 93 | }; |
94 | #endif /* PRISM2_NO_PROCFS_DEBUG */ | 94 | #endif /* PRISM2_NO_PROCFS_DEBUG */ |
95 | 95 | ||
@@ -1116,7 +1116,7 @@ static const struct file_operations prism2_sta_proc_fops = { | |||
1116 | .open = prism2_sta_proc_open, | 1116 | .open = prism2_sta_proc_open, |
1117 | .read = seq_read, | 1117 | .read = seq_read, |
1118 | .llseek = seq_lseek, | 1118 | .llseek = seq_lseek, |
1119 | .release = seq_release, | 1119 | .release = single_release, |
1120 | }; | 1120 | }; |
1121 | 1121 | ||
1122 | static void handle_add_proc_queue(struct work_struct *work) | 1122 | static void handle_add_proc_queue(struct work_struct *work) |
diff --git a/drivers/net/wireless/hostap/hostap_hw.c b/drivers/net/wireless/hostap/hostap_hw.c index 507ab99eef4e..6307a4e36c85 100644 --- a/drivers/net/wireless/hostap/hostap_hw.c +++ b/drivers/net/wireless/hostap/hostap_hw.c | |||
@@ -2957,7 +2957,7 @@ static const struct file_operations prism2_registers_proc_fops = { | |||
2957 | .open = prism2_registers_proc_open, | 2957 | .open = prism2_registers_proc_open, |
2958 | .read = seq_read, | 2958 | .read = seq_read, |
2959 | .llseek = seq_lseek, | 2959 | .llseek = seq_lseek, |
2960 | .release = seq_release, | 2960 | .release = single_release, |
2961 | }; | 2961 | }; |
2962 | 2962 | ||
2963 | #endif /* PRISM2_NO_PROCFS_DEBUG */ | 2963 | #endif /* PRISM2_NO_PROCFS_DEBUG */ |
diff --git a/drivers/net/wireless/hostap/hostap_proc.c b/drivers/net/wireless/hostap/hostap_proc.c index 7491dab2c105..aa7ad3a7a69b 100644 --- a/drivers/net/wireless/hostap/hostap_proc.c +++ b/drivers/net/wireless/hostap/hostap_proc.c | |||
@@ -52,7 +52,7 @@ static const struct file_operations prism2_debug_proc_fops = { | |||
52 | .open = prism2_debug_proc_open, | 52 | .open = prism2_debug_proc_open, |
53 | .read = seq_read, | 53 | .read = seq_read, |
54 | .llseek = seq_lseek, | 54 | .llseek = seq_lseek, |
55 | .release = seq_release, | 55 | .release = single_release, |
56 | }; | 56 | }; |
57 | #endif /* PRISM2_NO_PROCFS_DEBUG */ | 57 | #endif /* PRISM2_NO_PROCFS_DEBUG */ |
58 | 58 | ||
@@ -103,7 +103,7 @@ static const struct file_operations prism2_stats_proc_fops = { | |||
103 | .open = prism2_stats_proc_open, | 103 | .open = prism2_stats_proc_open, |
104 | .read = seq_read, | 104 | .read = seq_read, |
105 | .llseek = seq_lseek, | 105 | .llseek = seq_lseek, |
106 | .release = seq_release, | 106 | .release = single_release, |
107 | }; | 107 | }; |
108 | 108 | ||
109 | 109 | ||
@@ -265,7 +265,7 @@ static const struct file_operations prism2_crypt_proc_fops = { | |||
265 | .open = prism2_crypt_proc_open, | 265 | .open = prism2_crypt_proc_open, |
266 | .read = seq_read, | 266 | .read = seq_read, |
267 | .llseek = seq_lseek, | 267 | .llseek = seq_lseek, |
268 | .release = seq_release, | 268 | .release = single_release, |
269 | }; | 269 | }; |
270 | 270 | ||
271 | 271 | ||
diff --git a/drivers/scsi/megaraid.c b/drivers/scsi/megaraid.c index 7373255aa1e8..846f475f62c1 100644 --- a/drivers/scsi/megaraid.c +++ b/drivers/scsi/megaraid.c | |||
@@ -2770,7 +2770,7 @@ static const struct file_operations mega_proc_fops = { | |||
2770 | .open = mega_proc_open, | 2770 | .open = mega_proc_open, |
2771 | .read = seq_read, | 2771 | .read = seq_read, |
2772 | .llseek = seq_lseek, | 2772 | .llseek = seq_lseek, |
2773 | .release = seq_release, | 2773 | .release = single_release, |
2774 | }; | 2774 | }; |
2775 | 2775 | ||
2776 | /* | 2776 | /* |
diff --git a/drivers/staging/comedi/proc.c b/drivers/staging/comedi/proc.c index db790f9fc9db..886c202de9ab 100644 --- a/drivers/staging/comedi/proc.c +++ b/drivers/staging/comedi/proc.c | |||
@@ -86,7 +86,7 @@ static const struct file_operations comedi_proc_fops = { | |||
86 | .open = comedi_proc_open, | 86 | .open = comedi_proc_open, |
87 | .read = seq_read, | 87 | .read = seq_read, |
88 | .llseek = seq_lseek, | 88 | .llseek = seq_lseek, |
89 | .release = seq_release, | 89 | .release = single_release, |
90 | }; | 90 | }; |
91 | 91 | ||
92 | void comedi_proc_init(void) | 92 | void comedi_proc_init(void) |
diff --git a/drivers/staging/csr/io.c b/drivers/staging/csr/io.c index f9b5c22c00b8..fe4a7ba2acc9 100644 --- a/drivers/staging/csr/io.c +++ b/drivers/staging/csr/io.c | |||
@@ -95,7 +95,7 @@ static const struct file_operations uf_proc_fops = { | |||
95 | .open = uf_proc_open, | 95 | .open = uf_proc_open, |
96 | .read = seq_read, | 96 | .read = seq_read, |
97 | .llseek = seq_lseek, | 97 | .llseek = seq_lseek, |
98 | .release = seq_release, | 98 | .release = single_release, |
99 | }; | 99 | }; |
100 | 100 | ||
101 | #endif /* CONFIG_PROC_FS */ | 101 | #endif /* CONFIG_PROC_FS */ |
diff --git a/drivers/staging/cxt1e1/sbeproc.c b/drivers/staging/cxt1e1/sbeproc.c index 49f10f0b7d29..9361dd8ce125 100644 --- a/drivers/staging/cxt1e1/sbeproc.c +++ b/drivers/staging/cxt1e1/sbeproc.c | |||
@@ -189,7 +189,7 @@ static const struct file_operations sbecom_proc_fops = { | |||
189 | .open = sbecom_proc_open, | 189 | .open = sbecom_proc_open, |
190 | .read = seq_read, | 190 | .read = seq_read, |
191 | .llseek = seq_lseek, | 191 | .llseek = seq_lseek, |
192 | .release = seq_release, | 192 | .release = single_release, |
193 | }; | 193 | }; |
194 | 194 | ||
195 | /* | 195 | /* |
diff --git a/drivers/staging/ft1000/ft1000-pcmcia/ft1000_proc.c b/drivers/staging/ft1000/ft1000-pcmcia/ft1000_proc.c index 21b369e0150f..94e426e4d98b 100644 --- a/drivers/staging/ft1000/ft1000-pcmcia/ft1000_proc.c +++ b/drivers/staging/ft1000/ft1000-pcmcia/ft1000_proc.c | |||
@@ -158,7 +158,7 @@ static const struct file_operations ft1000_proc_fops = { | |||
158 | .open = ft1000_proc_open, | 158 | .open = ft1000_proc_open, |
159 | .read = seq_read, | 159 | .read = seq_read, |
160 | .llseek = seq_lseek, | 160 | .llseek = seq_lseek, |
161 | .release = seq_release, | 161 | .release = single_release, |
162 | }; | 162 | }; |
163 | 163 | ||
164 | static int ft1000NotifyProc(struct notifier_block *this, unsigned long event, | 164 | static int ft1000NotifyProc(struct notifier_block *this, unsigned long event, |
diff --git a/drivers/staging/ft1000/ft1000-usb/ft1000_proc.c b/drivers/staging/ft1000/ft1000-usb/ft1000_proc.c index d8294d6c9560..eca6f0292b4b 100644 --- a/drivers/staging/ft1000/ft1000-usb/ft1000_proc.c +++ b/drivers/staging/ft1000/ft1000-usb/ft1000_proc.c | |||
@@ -160,7 +160,7 @@ static const struct file_operations ft1000_proc_fops = { | |||
160 | .open = ft1000_proc_open, | 160 | .open = ft1000_proc_open, |
161 | .read = seq_read, | 161 | .read = seq_read, |
162 | .llseek = seq_lseek, | 162 | .llseek = seq_lseek, |
163 | .release = seq_release, | 163 | .release = single_release, |
164 | }; | 164 | }; |
165 | 165 | ||
166 | static int | 166 | static int |
diff --git a/drivers/staging/rtl8187se/r8180_core.c b/drivers/staging/rtl8187se/r8180_core.c index f7c1d9905ec6..ca691550436a 100644 --- a/drivers/staging/rtl8187se/r8180_core.c +++ b/drivers/staging/rtl8187se/r8180_core.c | |||
@@ -306,7 +306,7 @@ static const struct file_operations rtl8180_proc_fops = { | |||
306 | .open = rtl8180_proc_open, | 306 | .open = rtl8180_proc_open, |
307 | .read = seq_read, | 307 | .read = seq_read, |
308 | .llseek = seq_lseek, | 308 | .llseek = seq_lseek, |
309 | .release = seq_release, | 309 | .release = single_release, |
310 | }; | 310 | }; |
311 | 311 | ||
312 | /* | 312 | /* |
diff --git a/drivers/staging/rtl8192u/r8192U_core.c b/drivers/staging/rtl8192u/r8192U_core.c index 145923397556..71f5cde9ed1c 100644 --- a/drivers/staging/rtl8192u/r8192U_core.c +++ b/drivers/staging/rtl8192u/r8192U_core.c | |||
@@ -647,7 +647,7 @@ static const struct file_operations rtl8192_proc_fops = { | |||
647 | .open = rtl8192_proc_open, | 647 | .open = rtl8192_proc_open, |
648 | .read = seq_read, | 648 | .read = seq_read, |
649 | .llseek = seq_lseek, | 649 | .llseek = seq_lseek, |
650 | .release = seq_release, | 650 | .release = single_release, |
651 | }; | 651 | }; |
652 | 652 | ||
653 | /* | 653 | /* |
diff --git a/drivers/staging/wlags49_h2/wl_main.c b/drivers/staging/wlags49_h2/wl_main.c index c4264e8c877d..f28f15baea96 100644 --- a/drivers/staging/wlags49_h2/wl_main.c +++ b/drivers/staging/wlags49_h2/wl_main.c | |||
@@ -160,7 +160,7 @@ static const struct file_operations scull_read_procmem_fops = { | |||
160 | .open = scull_read_procmem_open, | 160 | .open = scull_read_procmem_open, |
161 | .read = seq_read, | 161 | .read = seq_read, |
162 | .llseek = seq_lseek, | 162 | .llseek = seq_lseek, |
163 | .release = seq_release, | 163 | .release = single_release, |
164 | }; | 164 | }; |
165 | 165 | ||
166 | #endif /* SCULL_USE_PROC */ | 166 | #endif /* SCULL_USE_PROC */ |
diff --git a/drivers/usb/gadget/fsl_udc_core.c b/drivers/usb/gadget/fsl_udc_core.c index 2d8c1cfea699..a766a4ca1cb7 100644 --- a/drivers/usb/gadget/fsl_udc_core.c +++ b/drivers/usb/gadget/fsl_udc_core.c | |||
@@ -2211,7 +2211,7 @@ static const struct file_operations fsl_proc_fops = { | |||
2211 | .open = fsl_proc_open, | 2211 | .open = fsl_proc_open, |
2212 | .read = seq_read, | 2212 | .read = seq_read, |
2213 | .llseek = seq_lseek, | 2213 | .llseek = seq_lseek, |
2214 | .release = seq_release, | 2214 | .release = single_release, |
2215 | }; | 2215 | }; |
2216 | 2216 | ||
2217 | #define create_proc_file() proc_create(proc_filename, 0, NULL, &fsl_proc_fops) | 2217 | #define create_proc_file() proc_create(proc_filename, 0, NULL, &fsl_proc_fops) |
diff --git a/drivers/usb/gadget/goku_udc.c b/drivers/usb/gadget/goku_udc.c index 480eeb7cfd92..52dd6cc6c0aa 100644 --- a/drivers/usb/gadget/goku_udc.c +++ b/drivers/usb/gadget/goku_udc.c | |||
@@ -1214,7 +1214,7 @@ static const struct file_operations udc_proc_fops = { | |||
1214 | .open = udc_proc_open, | 1214 | .open = udc_proc_open, |
1215 | .read = seq_read, | 1215 | .read = seq_read, |
1216 | .llseek = seq_lseek, | 1216 | .llseek = seq_lseek, |
1217 | .release = seq_release, | 1217 | .release = single_release, |
1218 | }; | 1218 | }; |
1219 | 1219 | ||
1220 | #endif /* CONFIG_USB_GADGET_DEBUG_FILES */ | 1220 | #endif /* CONFIG_USB_GADGET_DEBUG_FILES */ |
diff --git a/kernel/rcutree_trace.c b/kernel/rcutree_trace.c index 49099e81c87b..cf6c17412932 100644 --- a/kernel/rcutree_trace.c +++ b/kernel/rcutree_trace.c | |||
@@ -95,7 +95,7 @@ static const struct file_operations rcubarrier_fops = { | |||
95 | .open = rcubarrier_open, | 95 | .open = rcubarrier_open, |
96 | .read = seq_read, | 96 | .read = seq_read, |
97 | .llseek = no_llseek, | 97 | .llseek = no_llseek, |
98 | .release = seq_release, | 98 | .release = single_release, |
99 | }; | 99 | }; |
100 | 100 | ||
101 | #ifdef CONFIG_RCU_BOOST | 101 | #ifdef CONFIG_RCU_BOOST |
@@ -206,7 +206,7 @@ static const struct file_operations rcuexp_fops = { | |||
206 | .open = rcuexp_open, | 206 | .open = rcuexp_open, |
207 | .read = seq_read, | 207 | .read = seq_read, |
208 | .llseek = no_llseek, | 208 | .llseek = no_llseek, |
209 | .release = seq_release, | 209 | .release = single_release, |
210 | }; | 210 | }; |
211 | 211 | ||
212 | #ifdef CONFIG_RCU_BOOST | 212 | #ifdef CONFIG_RCU_BOOST |
@@ -306,7 +306,7 @@ static const struct file_operations rcuhier_fops = { | |||
306 | .open = rcuhier_open, | 306 | .open = rcuhier_open, |
307 | .read = seq_read, | 307 | .read = seq_read, |
308 | .llseek = no_llseek, | 308 | .llseek = no_llseek, |
309 | .release = seq_release, | 309 | .release = single_release, |
310 | }; | 310 | }; |
311 | 311 | ||
312 | static void show_one_rcugp(struct seq_file *m, struct rcu_state *rsp) | 312 | static void show_one_rcugp(struct seq_file *m, struct rcu_state *rsp) |
@@ -348,7 +348,7 @@ static const struct file_operations rcugp_fops = { | |||
348 | .open = rcugp_open, | 348 | .open = rcugp_open, |
349 | .read = seq_read, | 349 | .read = seq_read, |
350 | .llseek = no_llseek, | 350 | .llseek = no_llseek, |
351 | .release = seq_release, | 351 | .release = single_release, |
352 | }; | 352 | }; |
353 | 353 | ||
354 | static void print_one_rcu_pending(struct seq_file *m, struct rcu_data *rdp) | 354 | static void print_one_rcu_pending(struct seq_file *m, struct rcu_data *rdp) |