aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2013-05-05 13:35:26 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2013-05-05 13:35:26 -0400
commit24d0c2542b38963ae4d5171ecc0a2c1326c656bc (patch)
tree1d7de3d2f79f65c34e8f29d7bb6fe5ed512b226c
parent802d0db827eaa5a34dd655623c71134ec63d8c3f (diff)
parent7ee2b9e56495c56dcaffa2bab19b39451d9fdc8a (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
-rw-r--r--arch/arm/kernel/swp_emulate.c2
-rw-r--r--arch/arm/mach-omap1/pm.c2
-rw-r--r--arch/cris/arch-v10/kernel/fasttimer.c2
-rw-r--r--arch/cris/arch-v32/kernel/fasttimer.c2
-rw-r--r--arch/h8300/kernel/gpio.c2
-rw-r--r--arch/ia64/kernel/palinfo.c2
-rw-r--r--arch/ia64/kernel/salinfo.c2
-rw-r--r--arch/ia64/sn/kernel/sn2/prominfo_proc.c4
-rw-r--r--arch/mips/kernel/smtc-proc.c2
-rw-r--r--arch/mips/pci/ops-pmcmsp.c4
-rw-r--r--arch/mips/sibyte/sb1250/bus_watcher.c2
-rw-r--r--arch/parisc/kernel/pdc_chassis.c2
-rw-r--r--arch/sh/drivers/dma/dma-api.c2
-rw-r--r--drivers/char/ds1620.c2
-rw-r--r--drivers/char/efirtc.c2
-rw-r--r--drivers/char/genrtc.c2
-rw-r--r--drivers/input/misc/hp_sdc_rtc.c2
-rw-r--r--drivers/net/wireless/atmel.c2
-rw-r--r--drivers/net/wireless/hostap/hostap_ap.c4
-rw-r--r--drivers/net/wireless/hostap/hostap_hw.c2
-rw-r--r--drivers/net/wireless/hostap/hostap_proc.c6
-rw-r--r--drivers/scsi/megaraid.c2
-rw-r--r--drivers/staging/comedi/proc.c2
-rw-r--r--drivers/staging/csr/io.c2
-rw-r--r--drivers/staging/cxt1e1/sbeproc.c2
-rw-r--r--drivers/staging/ft1000/ft1000-pcmcia/ft1000_proc.c2
-rw-r--r--drivers/staging/ft1000/ft1000-usb/ft1000_proc.c2
-rw-r--r--drivers/staging/rtl8187se/r8180_core.c2
-rw-r--r--drivers/staging/rtl8192u/r8192U_core.c2
-rw-r--r--drivers/staging/wlags49_h2/wl_main.c2
-rw-r--r--drivers/usb/gadget/fsl_udc_core.c2
-rw-r--r--drivers/usb/gadget/goku_udc.c2
-rw-r--r--kernel/rcutree_trace.c8
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
563static void omap_pm_init_debugfs(void) 563static 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
167static __init int register_proc(void) 167static __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
935static void __cpuinit 935static 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
700module_init(salinfo_init); 700module_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
155static int proc_version_show(struct seq_file *m, void *v) 155static 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
67void init_smtc_stats(void) 67void 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
151static void create_proc_decoder(struct bw_stats_struct *stats) 151static 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
281static int __init pdc_chassis_create_procfs(void) 281static 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
354int register_dmac(struct dma_info *info) 354int 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
375static int __init 375static 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
471static int __init gen_rtc_proc_init(void) 471static 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
521static int hp_sdc_rtc_ioctl(struct file *file, 521static 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
1508static const struct net_device_ops atmel_netdev_ops = { 1508static 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
1122static void handle_add_proc_queue(struct work_struct *work) 1122static 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
92void comedi_proc_init(void) 92void 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
164static int ft1000NotifyProc(struct notifier_block *this, unsigned long event, 164static 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
166static int 166static 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
312static void show_one_rcugp(struct seq_file *m, struct rcu_state *rsp) 312static 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
354static void print_one_rcu_pending(struct seq_file *m, struct rcu_data *rdp) 354static void print_one_rcu_pending(struct seq_file *m, struct rcu_data *rdp)