aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Wright <chrisw@sous-sol.org>2010-05-12 21:28:57 -0400
committerGreg Kroah-Hartman <gregkh@suse.de>2010-05-21 12:37:31 -0400
commit2c3c8bea608866d8bd9dcf92657d57fdcac011c5 (patch)
treef509b958d0a65c46c831dbdd447a81e706dd995a
parent68d75ed4b84a0806ecd4bc14da4759713b23a532 (diff)
sysfs: add struct file* to bin_attr callbacks
This allows bin_attr->read,write,mmap callbacks to check file specific data (such as inode owner) as part of any privilege validation. Signed-off-by: Chris Wright <chrisw@sous-sol.org> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-rw-r--r--arch/alpha/kernel/pci-sysfs.c8
-rw-r--r--arch/mips/txx9/generic/setup.c4
-rw-r--r--arch/powerpc/sysdev/mv64x60_pci.c4
-rw-r--r--arch/s390/kernel/ipl.c14
-rw-r--r--drivers/acpi/system.c2
-rw-r--r--drivers/base/firmware_class.c11
-rw-r--r--drivers/firmware/dcdbas.c4
-rw-r--r--drivers/firmware/dell_rbu.c10
-rw-r--r--drivers/firmware/efivars.c4
-rw-r--r--drivers/gpu/drm/drm_sysfs.c5
-rw-r--r--drivers/misc/c2port/core.c4
-rw-r--r--drivers/misc/ds1682.c6
-rw-r--r--drivers/misc/eeprom/at24.c6
-rw-r--r--drivers/misc/eeprom/at25.c6
-rw-r--r--drivers/misc/eeprom/eeprom.c3
-rw-r--r--drivers/misc/eeprom/max6875.c2
-rw-r--r--drivers/net/netxen/netxen_nic_main.c11
-rw-r--r--drivers/net/qlcnic/qlcnic_main.c12
-rw-r--r--drivers/pci/hotplug/acpiphp_ibm.c5
-rw-r--r--drivers/pci/pci-sysfs.c42
-rw-r--r--drivers/pcmcia/cistpl.c4
-rw-r--r--drivers/power/olpc_battery.c2
-rw-r--r--drivers/rapidio/rio-sysfs.c6
-rw-r--r--drivers/rtc/rtc-cmos.c6
-rw-r--r--drivers/rtc/rtc-ds1305.c6
-rw-r--r--drivers/rtc/rtc-ds1307.c6
-rw-r--r--drivers/rtc/rtc-ds1511.c10
-rw-r--r--drivers/rtc/rtc-ds1553.c4
-rw-r--r--drivers/rtc/rtc-ds1742.c4
-rw-r--r--drivers/rtc/rtc-m48t59.c4
-rw-r--r--drivers/rtc/rtc-stk17ta8.c4
-rw-r--r--drivers/rtc/rtc-tx4939.c4
-rw-r--r--drivers/s390/cio/chp.c5
-rw-r--r--drivers/scsi/3w-sas.c4
-rw-r--r--drivers/scsi/arcmsr/arcmsr_attr.c9
-rw-r--r--drivers/scsi/ibmvscsi/ibmvfc.c3
-rw-r--r--drivers/scsi/ipr.c9
-rw-r--r--drivers/scsi/lpfc/lpfc_attr.c20
-rw-r--r--drivers/scsi/qla2xxx/qla_attr.c32
-rw-r--r--drivers/staging/udlfb/udlfb.c3
-rw-r--r--drivers/usb/core/sysfs.c3
-rw-r--r--drivers/video/aty/radeon_base.c4
-rw-r--r--drivers/w1/slaves/w1_ds2431.c4
-rw-r--r--drivers/w1/slaves/w1_ds2433.c4
-rw-r--r--drivers/w1/slaves/w1_ds2760.c2
-rw-r--r--drivers/w1/w1.c4
-rw-r--r--drivers/zorro/zorro-sysfs.c2
-rw-r--r--fs/sysfs/bin.c24
-rw-r--r--include/linux/sysfs.h7
-rw-r--r--kernel/ksysfs.c3
-rw-r--r--kernel/module.c2
-rw-r--r--net/bridge/br_sysfs_br.c2
52 files changed, 220 insertions, 149 deletions
diff --git a/arch/alpha/kernel/pci-sysfs.c b/arch/alpha/kernel/pci-sysfs.c
index d979e7c7bc4b..a5fffc882c72 100644
--- a/arch/alpha/kernel/pci-sysfs.c
+++ b/arch/alpha/kernel/pci-sysfs.c
@@ -53,6 +53,7 @@ static int __pci_mmap_fits(struct pci_dev *pdev, int num,
53 53
54/** 54/**
55 * pci_mmap_resource - map a PCI resource into user memory space 55 * pci_mmap_resource - map a PCI resource into user memory space
56 * @filp: open sysfs file
56 * @kobj: kobject for mapping 57 * @kobj: kobject for mapping
57 * @attr: struct bin_attribute for the file being mapped 58 * @attr: struct bin_attribute for the file being mapped
58 * @vma: struct vm_area_struct passed into the mmap 59 * @vma: struct vm_area_struct passed into the mmap
@@ -60,7 +61,8 @@ static int __pci_mmap_fits(struct pci_dev *pdev, int num,
60 * 61 *
61 * Use the bus mapping routines to map a PCI resource into userspace. 62 * Use the bus mapping routines to map a PCI resource into userspace.
62 */ 63 */
63static int pci_mmap_resource(struct kobject *kobj, struct bin_attribute *attr, 64static int pci_mmap_resource(struct file *filp, struct kobject *kobj,
65 struct bin_attribute *attr,
64 struct vm_area_struct *vma, int sparse) 66 struct vm_area_struct *vma, int sparse)
65{ 67{
66 struct pci_dev *pdev = to_pci_dev(container_of(kobj, 68 struct pci_dev *pdev = to_pci_dev(container_of(kobj,
@@ -89,14 +91,14 @@ static int pci_mmap_resource(struct kobject *kobj, struct bin_attribute *attr,
89 return hose_mmap_page_range(pdev->sysdata, vma, mmap_type, sparse); 91 return hose_mmap_page_range(pdev->sysdata, vma, mmap_type, sparse);
90} 92}
91 93
92static int pci_mmap_resource_sparse(struct kobject *kobj, 94static int pci_mmap_resource_sparse(struct file *filp, struct kobject *kobj,
93 struct bin_attribute *attr, 95 struct bin_attribute *attr,
94 struct vm_area_struct *vma) 96 struct vm_area_struct *vma)
95{ 97{
96 return pci_mmap_resource(kobj, attr, vma, 1); 98 return pci_mmap_resource(kobj, attr, vma, 1);
97} 99}
98 100
99static int pci_mmap_resource_dense(struct kobject *kobj, 101static int pci_mmap_resource_dense(struct file *filp, struct kobject *kobj,
100 struct bin_attribute *attr, 102 struct bin_attribute *attr,
101 struct vm_area_struct *vma) 103 struct vm_area_struct *vma)
102{ 104{
diff --git a/arch/mips/txx9/generic/setup.c b/arch/mips/txx9/generic/setup.c
index adc69291f9e2..575d219b8001 100644
--- a/arch/mips/txx9/generic/setup.c
+++ b/arch/mips/txx9/generic/setup.c
@@ -905,7 +905,7 @@ struct txx9_sramc_sysdev {
905 void __iomem *base; 905 void __iomem *base;
906}; 906};
907 907
908static ssize_t txx9_sram_read(struct kobject *kobj, 908static ssize_t txx9_sram_read(struct file *filp, struct kobject *kobj,
909 struct bin_attribute *bin_attr, 909 struct bin_attribute *bin_attr,
910 char *buf, loff_t pos, size_t size) 910 char *buf, loff_t pos, size_t size)
911{ 911{
@@ -920,7 +920,7 @@ static ssize_t txx9_sram_read(struct kobject *kobj,
920 return size; 920 return size;
921} 921}
922 922
923static ssize_t txx9_sram_write(struct kobject *kobj, 923static ssize_t txx9_sram_write(struct file *filp, struct kobject *kobj,
924 struct bin_attribute *bin_attr, 924 struct bin_attribute *bin_attr,
925 char *buf, loff_t pos, size_t size) 925 char *buf, loff_t pos, size_t size)
926{ 926{
diff --git a/arch/powerpc/sysdev/mv64x60_pci.c b/arch/powerpc/sysdev/mv64x60_pci.c
index 1456015a22d8..198f288570cc 100644
--- a/arch/powerpc/sysdev/mv64x60_pci.c
+++ b/arch/powerpc/sysdev/mv64x60_pci.c
@@ -24,7 +24,7 @@
24#define MV64X60_VAL_LEN_MAX 11 24#define MV64X60_VAL_LEN_MAX 11
25#define MV64X60_PCICFG_CPCI_HOTSWAP 0x68 25#define MV64X60_PCICFG_CPCI_HOTSWAP 0x68
26 26
27static ssize_t mv64x60_hs_reg_read(struct kobject *kobj, 27static ssize_t mv64x60_hs_reg_read(struct file *filp, struct kobject *kobj,
28 struct bin_attribute *attr, char *buf, 28 struct bin_attribute *attr, char *buf,
29 loff_t off, size_t count) 29 loff_t off, size_t count)
30{ 30{
@@ -45,7 +45,7 @@ static ssize_t mv64x60_hs_reg_read(struct kobject *kobj,
45 return sprintf(buf, "0x%08x\n", v); 45 return sprintf(buf, "0x%08x\n", v);
46} 46}
47 47
48static ssize_t mv64x60_hs_reg_write(struct kobject *kobj, 48static ssize_t mv64x60_hs_reg_write(struct file *filp, struct kobject *kobj,
49 struct bin_attribute *attr, char *buf, 49 struct bin_attribute *attr, char *buf,
50 loff_t off, size_t count) 50 loff_t off, size_t count)
51{ 51{
diff --git a/arch/s390/kernel/ipl.c b/arch/s390/kernel/ipl.c
index 72c8b0d070c8..a689070be287 100644
--- a/arch/s390/kernel/ipl.c
+++ b/arch/s390/kernel/ipl.c
@@ -403,8 +403,9 @@ static ssize_t sys_ipl_device_show(struct kobject *kobj,
403static struct kobj_attribute sys_ipl_device_attr = 403static struct kobj_attribute sys_ipl_device_attr =
404 __ATTR(device, S_IRUGO, sys_ipl_device_show, NULL); 404 __ATTR(device, S_IRUGO, sys_ipl_device_show, NULL);
405 405
406static ssize_t ipl_parameter_read(struct kobject *kobj, struct bin_attribute *attr, 406static ssize_t ipl_parameter_read(struct file *filp, struct kobject *kobj,
407 char *buf, loff_t off, size_t count) 407 struct bin_attribute *attr, char *buf,
408 loff_t off, size_t count)
408{ 409{
409 return memory_read_from_buffer(buf, count, &off, IPL_PARMBLOCK_START, 410 return memory_read_from_buffer(buf, count, &off, IPL_PARMBLOCK_START,
410 IPL_PARMBLOCK_SIZE); 411 IPL_PARMBLOCK_SIZE);
@@ -419,8 +420,9 @@ static struct bin_attribute ipl_parameter_attr = {
419 .read = &ipl_parameter_read, 420 .read = &ipl_parameter_read,
420}; 421};
421 422
422static ssize_t ipl_scp_data_read(struct kobject *kobj, struct bin_attribute *attr, 423static ssize_t ipl_scp_data_read(struct file *filp, struct kobject *kobj,
423 char *buf, loff_t off, size_t count) 424 struct bin_attribute *attr, char *buf,
425 loff_t off, size_t count)
424{ 426{
425 unsigned int size = IPL_PARMBLOCK_START->ipl_info.fcp.scp_data_len; 427 unsigned int size = IPL_PARMBLOCK_START->ipl_info.fcp.scp_data_len;
426 void *scp_data = &IPL_PARMBLOCK_START->ipl_info.fcp.scp_data; 428 void *scp_data = &IPL_PARMBLOCK_START->ipl_info.fcp.scp_data;
@@ -694,7 +696,7 @@ static struct kobj_attribute sys_reipl_ccw_vmparm_attr =
694 696
695/* FCP reipl device attributes */ 697/* FCP reipl device attributes */
696 698
697static ssize_t reipl_fcp_scpdata_read(struct kobject *kobj, 699static ssize_t reipl_fcp_scpdata_read(struct file *filp, struct kobject *kobj,
698 struct bin_attribute *attr, 700 struct bin_attribute *attr,
699 char *buf, loff_t off, size_t count) 701 char *buf, loff_t off, size_t count)
700{ 702{
@@ -704,7 +706,7 @@ static ssize_t reipl_fcp_scpdata_read(struct kobject *kobj,
704 return memory_read_from_buffer(buf, count, &off, scp_data, size); 706 return memory_read_from_buffer(buf, count, &off, scp_data, size);
705} 707}
706 708
707static ssize_t reipl_fcp_scpdata_write(struct kobject *kobj, 709static ssize_t reipl_fcp_scpdata_write(struct file *filp, struct kobject *kobj,
708 struct bin_attribute *attr, 710 struct bin_attribute *attr,
709 char *buf, loff_t off, size_t count) 711 char *buf, loff_t off, size_t count)
710{ 712{
diff --git a/drivers/acpi/system.c b/drivers/acpi/system.c
index e35525b39f6b..c79e789ed03a 100644
--- a/drivers/acpi/system.c
+++ b/drivers/acpi/system.c
@@ -71,7 +71,7 @@ struct acpi_table_attr {
71 struct list_head node; 71 struct list_head node;
72}; 72};
73 73
74static ssize_t acpi_table_show(struct kobject *kobj, 74static ssize_t acpi_table_show(struct file *filp, struct kobject *kobj,
75 struct bin_attribute *bin_attr, char *buf, 75 struct bin_attribute *bin_attr, char *buf,
76 loff_t offset, size_t count) 76 loff_t offset, size_t count)
77{ 77{
diff --git a/drivers/base/firmware_class.c b/drivers/base/firmware_class.c
index d98e424675cf..3f093b0dd217 100644
--- a/drivers/base/firmware_class.c
+++ b/drivers/base/firmware_class.c
@@ -278,8 +278,9 @@ static ssize_t firmware_loading_store(struct device *dev,
278static DEVICE_ATTR(loading, 0644, firmware_loading_show, firmware_loading_store); 278static DEVICE_ATTR(loading, 0644, firmware_loading_show, firmware_loading_store);
279 279
280static ssize_t 280static ssize_t
281firmware_data_read(struct kobject *kobj, struct bin_attribute *bin_attr, 281firmware_data_read(struct file *filp, struct kobject *kobj,
282 char *buffer, loff_t offset, size_t count) 282 struct bin_attribute *bin_attr, char *buffer, loff_t offset,
283 size_t count)
283{ 284{
284 struct device *dev = to_dev(kobj); 285 struct device *dev = to_dev(kobj);
285 struct firmware_priv *fw_priv = dev_get_drvdata(dev); 286 struct firmware_priv *fw_priv = dev_get_drvdata(dev);
@@ -362,6 +363,7 @@ fw_realloc_buffer(struct firmware_priv *fw_priv, int min_size)
362 363
363/** 364/**
364 * firmware_data_write - write method for firmware 365 * firmware_data_write - write method for firmware
366 * @filp: open sysfs file
365 * @kobj: kobject for the device 367 * @kobj: kobject for the device
366 * @bin_attr: bin_attr structure 368 * @bin_attr: bin_attr structure
367 * @buffer: buffer being written 369 * @buffer: buffer being written
@@ -372,8 +374,9 @@ fw_realloc_buffer(struct firmware_priv *fw_priv, int min_size)
372 * the driver as a firmware image. 374 * the driver as a firmware image.
373 **/ 375 **/
374static ssize_t 376static ssize_t
375firmware_data_write(struct kobject *kobj, struct bin_attribute *bin_attr, 377firmware_data_write(struct file* filp, struct kobject *kobj,
376 char *buffer, loff_t offset, size_t count) 378 struct bin_attribute *bin_attr, char *buffer,
379 loff_t offset, size_t count)
377{ 380{
378 struct device *dev = to_dev(kobj); 381 struct device *dev = to_dev(kobj);
379 struct firmware_priv *fw_priv = dev_get_drvdata(dev); 382 struct firmware_priv *fw_priv = dev_get_drvdata(dev);
diff --git a/drivers/firmware/dcdbas.c b/drivers/firmware/dcdbas.c
index fb09bb3c0ad6..aa9bc9e980e1 100644
--- a/drivers/firmware/dcdbas.c
+++ b/drivers/firmware/dcdbas.c
@@ -149,7 +149,7 @@ static ssize_t smi_data_buf_size_store(struct device *dev,
149 return count; 149 return count;
150} 150}
151 151
152static ssize_t smi_data_read(struct kobject *kobj, 152static ssize_t smi_data_read(struct file *filp, struct kobject *kobj,
153 struct bin_attribute *bin_attr, 153 struct bin_attribute *bin_attr,
154 char *buf, loff_t pos, size_t count) 154 char *buf, loff_t pos, size_t count)
155{ 155{
@@ -162,7 +162,7 @@ static ssize_t smi_data_read(struct kobject *kobj,
162 return ret; 162 return ret;
163} 163}
164 164
165static ssize_t smi_data_write(struct kobject *kobj, 165static ssize_t smi_data_write(struct file *filp, struct kobject *kobj,
166 struct bin_attribute *bin_attr, 166 struct bin_attribute *bin_attr,
167 char *buf, loff_t pos, size_t count) 167 char *buf, loff_t pos, size_t count)
168{ 168{
diff --git a/drivers/firmware/dell_rbu.c b/drivers/firmware/dell_rbu.c
index 3a4460265b10..2f452f1f7c8a 100644
--- a/drivers/firmware/dell_rbu.c
+++ b/drivers/firmware/dell_rbu.c
@@ -522,7 +522,7 @@ static ssize_t read_rbu_mono_data(char *buffer, loff_t pos, size_t count)
522 rbu_data.image_update_buffer, rbu_data.bios_image_size); 522 rbu_data.image_update_buffer, rbu_data.bios_image_size);
523} 523}
524 524
525static ssize_t read_rbu_data(struct kobject *kobj, 525static ssize_t read_rbu_data(struct file *filp, struct kobject *kobj,
526 struct bin_attribute *bin_attr, 526 struct bin_attribute *bin_attr,
527 char *buffer, loff_t pos, size_t count) 527 char *buffer, loff_t pos, size_t count)
528{ 528{
@@ -576,7 +576,7 @@ static void callbackfn_rbu(const struct firmware *fw, void *context)
576 release_firmware(fw); 576 release_firmware(fw);
577} 577}
578 578
579static ssize_t read_rbu_image_type(struct kobject *kobj, 579static ssize_t read_rbu_image_type(struct file *filp, struct kobject *kobj,
580 struct bin_attribute *bin_attr, 580 struct bin_attribute *bin_attr,
581 char *buffer, loff_t pos, size_t count) 581 char *buffer, loff_t pos, size_t count)
582{ 582{
@@ -586,7 +586,7 @@ static ssize_t read_rbu_image_type(struct kobject *kobj,
586 return size; 586 return size;
587} 587}
588 588
589static ssize_t write_rbu_image_type(struct kobject *kobj, 589static ssize_t write_rbu_image_type(struct file *filp, struct kobject *kobj,
590 struct bin_attribute *bin_attr, 590 struct bin_attribute *bin_attr,
591 char *buffer, loff_t pos, size_t count) 591 char *buffer, loff_t pos, size_t count)
592{ 592{
@@ -647,7 +647,7 @@ static ssize_t write_rbu_image_type(struct kobject *kobj,
647 return rc; 647 return rc;
648} 648}
649 649
650static ssize_t read_rbu_packet_size(struct kobject *kobj, 650static ssize_t read_rbu_packet_size(struct file *filp, struct kobject *kobj,
651 struct bin_attribute *bin_attr, 651 struct bin_attribute *bin_attr,
652 char *buffer, loff_t pos, size_t count) 652 char *buffer, loff_t pos, size_t count)
653{ 653{
@@ -660,7 +660,7 @@ static ssize_t read_rbu_packet_size(struct kobject *kobj,
660 return size; 660 return size;
661} 661}
662 662
663static ssize_t write_rbu_packet_size(struct kobject *kobj, 663static ssize_t write_rbu_packet_size(struct file *filp, struct kobject *kobj,
664 struct bin_attribute *bin_attr, 664 struct bin_attribute *bin_attr,
665 char *buffer, loff_t pos, size_t count) 665 char *buffer, loff_t pos, size_t count)
666{ 666{
diff --git a/drivers/firmware/efivars.c b/drivers/firmware/efivars.c
index 81b70bd07586..2a62ec6390e0 100644
--- a/drivers/firmware/efivars.c
+++ b/drivers/firmware/efivars.c
@@ -402,7 +402,7 @@ efivar_unregister(struct efivar_entry *var)
402} 402}
403 403
404 404
405static ssize_t efivar_create(struct kobject *kobj, 405static ssize_t efivar_create(struct file *filp, struct kobject *kobj,
406 struct bin_attribute *bin_attr, 406 struct bin_attribute *bin_attr,
407 char *buf, loff_t pos, size_t count) 407 char *buf, loff_t pos, size_t count)
408{ 408{
@@ -461,7 +461,7 @@ static ssize_t efivar_create(struct kobject *kobj,
461 return count; 461 return count;
462} 462}
463 463
464static ssize_t efivar_delete(struct kobject *kobj, 464static ssize_t efivar_delete(struct file *filp, struct kobject *kobj,
465 struct bin_attribute *bin_attr, 465 struct bin_attribute *bin_attr,
466 char *buf, loff_t pos, size_t count) 466 char *buf, loff_t pos, size_t count)
467{ 467{
diff --git a/drivers/gpu/drm/drm_sysfs.c b/drivers/gpu/drm/drm_sysfs.c
index 25bbd30ed7af..387166d5a109 100644
--- a/drivers/gpu/drm/drm_sysfs.c
+++ b/drivers/gpu/drm/drm_sysfs.c
@@ -193,8 +193,9 @@ static ssize_t enabled_show(struct device *device,
193 "disabled"); 193 "disabled");
194} 194}
195 195
196static ssize_t edid_show(struct kobject *kobj, struct bin_attribute *attr, 196static ssize_t edid_show(struct file *filp, struct kobject *kobj,
197 char *buf, loff_t off, size_t count) 197 struct bin_attribute *attr, char *buf, loff_t off,
198 size_t count)
198{ 199{
199 struct device *connector_dev = container_of(kobj, struct device, kobj); 200 struct device *connector_dev = container_of(kobj, struct device, kobj);
200 struct drm_connector *connector = to_drm_connector(connector_dev); 201 struct drm_connector *connector = to_drm_connector(connector_dev);
diff --git a/drivers/misc/c2port/core.c b/drivers/misc/c2port/core.c
index ed090e77c9cd..19fc7c1cb428 100644
--- a/drivers/misc/c2port/core.c
+++ b/drivers/misc/c2port/core.c
@@ -707,7 +707,7 @@ static ssize_t __c2port_read_flash_data(struct c2port_device *dev,
707 return nread; 707 return nread;
708} 708}
709 709
710static ssize_t c2port_read_flash_data(struct kobject *kobj, 710static ssize_t c2port_read_flash_data(struct file *filp, struct kobject *kobj,
711 struct bin_attribute *attr, 711 struct bin_attribute *attr,
712 char *buffer, loff_t offset, size_t count) 712 char *buffer, loff_t offset, size_t count)
713{ 713{
@@ -824,7 +824,7 @@ static ssize_t __c2port_write_flash_data(struct c2port_device *dev,
824 return nwrite; 824 return nwrite;
825} 825}
826 826
827static ssize_t c2port_write_flash_data(struct kobject *kobj, 827static ssize_t c2port_write_flash_data(struct file *filp, struct kobject *kobj,
828 struct bin_attribute *attr, 828 struct bin_attribute *attr,
829 char *buffer, loff_t offset, size_t count) 829 char *buffer, loff_t offset, size_t count)
830{ 830{
diff --git a/drivers/misc/ds1682.c b/drivers/misc/ds1682.c
index 9197cfc55015..a513f0aa6432 100644
--- a/drivers/misc/ds1682.c
+++ b/drivers/misc/ds1682.c
@@ -140,7 +140,8 @@ static const struct attribute_group ds1682_group = {
140/* 140/*
141 * User data attribute 141 * User data attribute
142 */ 142 */
143static ssize_t ds1682_eeprom_read(struct kobject *kobj, struct bin_attribute *attr, 143static ssize_t ds1682_eeprom_read(struct file *filp, struct kobject *kobj,
144 struct bin_attribute *attr,
144 char *buf, loff_t off, size_t count) 145 char *buf, loff_t off, size_t count)
145{ 146{
146 struct i2c_client *client = kobj_to_i2c_client(kobj); 147 struct i2c_client *client = kobj_to_i2c_client(kobj);
@@ -163,7 +164,8 @@ static ssize_t ds1682_eeprom_read(struct kobject *kobj, struct bin_attribute *at
163 return count; 164 return count;
164} 165}
165 166
166static ssize_t ds1682_eeprom_write(struct kobject *kobj, struct bin_attribute *attr, 167static ssize_t ds1682_eeprom_write(struct file *filp, struct kobject *kobj,
168 struct bin_attribute *attr,
167 char *buf, loff_t off, size_t count) 169 char *buf, loff_t off, size_t count)
168{ 170{
169 struct i2c_client *client = kobj_to_i2c_client(kobj); 171 struct i2c_client *client = kobj_to_i2c_client(kobj);
diff --git a/drivers/misc/eeprom/at24.c b/drivers/misc/eeprom/at24.c
index db7d0f21b65d..a79a62f75481 100644
--- a/drivers/misc/eeprom/at24.c
+++ b/drivers/misc/eeprom/at24.c
@@ -274,7 +274,8 @@ static ssize_t at24_read(struct at24_data *at24,
274 return retval; 274 return retval;
275} 275}
276 276
277static ssize_t at24_bin_read(struct kobject *kobj, struct bin_attribute *attr, 277static ssize_t at24_bin_read(struct file *filp, struct kobject *kobj,
278 struct bin_attribute *attr,
278 char *buf, loff_t off, size_t count) 279 char *buf, loff_t off, size_t count)
279{ 280{
280 struct at24_data *at24; 281 struct at24_data *at24;
@@ -395,7 +396,8 @@ static ssize_t at24_write(struct at24_data *at24, const char *buf, loff_t off,
395 return retval; 396 return retval;
396} 397}
397 398
398static ssize_t at24_bin_write(struct kobject *kobj, struct bin_attribute *attr, 399static ssize_t at24_bin_write(struct file *filp, struct kobject *kobj,
400 struct bin_attribute *attr,
399 char *buf, loff_t off, size_t count) 401 char *buf, loff_t off, size_t count)
400{ 402{
401 struct at24_data *at24; 403 struct at24_data *at24;
diff --git a/drivers/misc/eeprom/at25.c b/drivers/misc/eeprom/at25.c
index d194212a41f6..c627e4174ccd 100644
--- a/drivers/misc/eeprom/at25.c
+++ b/drivers/misc/eeprom/at25.c
@@ -126,7 +126,8 @@ at25_ee_read(
126} 126}
127 127
128static ssize_t 128static ssize_t
129at25_bin_read(struct kobject *kobj, struct bin_attribute *bin_attr, 129at25_bin_read(struct file *filp, struct kobject *kobj,
130 struct bin_attribute *bin_attr,
130 char *buf, loff_t off, size_t count) 131 char *buf, loff_t off, size_t count)
131{ 132{
132 struct device *dev; 133 struct device *dev;
@@ -253,7 +254,8 @@ at25_ee_write(struct at25_data *at25, const char *buf, loff_t off,
253} 254}
254 255
255static ssize_t 256static ssize_t
256at25_bin_write(struct kobject *kobj, struct bin_attribute *bin_attr, 257at25_bin_write(struct file *filp, struct kobject *kobj,
258 struct bin_attribute *bin_attr,
257 char *buf, loff_t off, size_t count) 259 char *buf, loff_t off, size_t count)
258{ 260{
259 struct device *dev; 261 struct device *dev;
diff --git a/drivers/misc/eeprom/eeprom.c b/drivers/misc/eeprom/eeprom.c
index e306a8cd2f96..45060ddc4e59 100644
--- a/drivers/misc/eeprom/eeprom.c
+++ b/drivers/misc/eeprom/eeprom.c
@@ -81,7 +81,8 @@ exit:
81 mutex_unlock(&data->update_lock); 81 mutex_unlock(&data->update_lock);
82} 82}
83 83
84static ssize_t eeprom_read(struct kobject *kobj, struct bin_attribute *bin_attr, 84static ssize_t eeprom_read(struct file *filp, struct kobject *kobj,
85 struct bin_attribute *bin_attr,
85 char *buf, loff_t off, size_t count) 86 char *buf, loff_t off, size_t count)
86{ 87{
87 struct i2c_client *client = to_i2c_client(container_of(kobj, struct device, kobj)); 88 struct i2c_client *client = to_i2c_client(container_of(kobj, struct device, kobj));
diff --git a/drivers/misc/eeprom/max6875.c b/drivers/misc/eeprom/max6875.c
index fe2909278507..5653a3ce0517 100644
--- a/drivers/misc/eeprom/max6875.c
+++ b/drivers/misc/eeprom/max6875.c
@@ -107,7 +107,7 @@ exit_up:
107 mutex_unlock(&data->update_lock); 107 mutex_unlock(&data->update_lock);
108} 108}
109 109
110static ssize_t max6875_read(struct kobject *kobj, 110static ssize_t max6875_read(struct file *filp, struct kobject *kobj,
111 struct bin_attribute *bin_attr, 111 struct bin_attribute *bin_attr,
112 char *buf, loff_t off, size_t count) 112 char *buf, loff_t off, size_t count)
113{ 113{
diff --git a/drivers/net/netxen/netxen_nic_main.c b/drivers/net/netxen/netxen_nic_main.c
index c61a61f177b7..6ce6ce1df6d2 100644
--- a/drivers/net/netxen/netxen_nic_main.c
+++ b/drivers/net/netxen/netxen_nic_main.c
@@ -2560,7 +2560,8 @@ netxen_sysfs_validate_crb(struct netxen_adapter *adapter,
2560} 2560}
2561 2561
2562static ssize_t 2562static ssize_t
2563netxen_sysfs_read_crb(struct kobject *kobj, struct bin_attribute *attr, 2563netxen_sysfs_read_crb(struct file *filp, struct kobject *kobj,
2564 struct bin_attribute *attr,
2564 char *buf, loff_t offset, size_t size) 2565 char *buf, loff_t offset, size_t size)
2565{ 2566{
2566 struct device *dev = container_of(kobj, struct device, kobj); 2567 struct device *dev = container_of(kobj, struct device, kobj);
@@ -2587,7 +2588,8 @@ netxen_sysfs_read_crb(struct kobject *kobj, struct bin_attribute *attr,
2587} 2588}
2588 2589
2589static ssize_t 2590static ssize_t
2590netxen_sysfs_write_crb(struct kobject *kobj, struct bin_attribute *attr, 2591netxen_sysfs_write_crb(struct file *filp, struct kobject *kobj,
2592 struct bin_attribute *attr,
2591 char *buf, loff_t offset, size_t size) 2593 char *buf, loff_t offset, size_t size)
2592{ 2594{
2593 struct device *dev = container_of(kobj, struct device, kobj); 2595 struct device *dev = container_of(kobj, struct device, kobj);
@@ -2627,7 +2629,8 @@ netxen_sysfs_validate_mem(struct netxen_adapter *adapter,
2627} 2629}
2628 2630
2629static ssize_t 2631static ssize_t
2630netxen_sysfs_read_mem(struct kobject *kobj, struct bin_attribute *attr, 2632netxen_sysfs_read_mem(struct file *filp, struct kobject *kobj,
2633 struct bin_attribute *attr,
2631 char *buf, loff_t offset, size_t size) 2634 char *buf, loff_t offset, size_t size)
2632{ 2635{
2633 struct device *dev = container_of(kobj, struct device, kobj); 2636 struct device *dev = container_of(kobj, struct device, kobj);
@@ -2647,7 +2650,7 @@ netxen_sysfs_read_mem(struct kobject *kobj, struct bin_attribute *attr,
2647 return size; 2650 return size;
2648} 2651}
2649 2652
2650static ssize_t netxen_sysfs_write_mem(struct kobject *kobj, 2653static ssize_t netxen_sysfs_write_mem(struct file *filp, struct kobject *kobj,
2651 struct bin_attribute *attr, char *buf, 2654 struct bin_attribute *attr, char *buf,
2652 loff_t offset, size_t size) 2655 loff_t offset, size_t size)
2653{ 2656{
diff --git a/drivers/net/qlcnic/qlcnic_main.c b/drivers/net/qlcnic/qlcnic_main.c
index 1003eb76fda3..23ea9caa5261 100644
--- a/drivers/net/qlcnic/qlcnic_main.c
+++ b/drivers/net/qlcnic/qlcnic_main.c
@@ -2464,7 +2464,8 @@ qlcnic_sysfs_validate_crb(struct qlcnic_adapter *adapter,
2464} 2464}
2465 2465
2466static ssize_t 2466static ssize_t
2467qlcnic_sysfs_read_crb(struct kobject *kobj, struct bin_attribute *attr, 2467qlcnic_sysfs_read_crb(struct file *filp, struct kobject *kobj,
2468 struct bin_attribute *attr,
2468 char *buf, loff_t offset, size_t size) 2469 char *buf, loff_t offset, size_t size)
2469{ 2470{
2470 struct device *dev = container_of(kobj, struct device, kobj); 2471 struct device *dev = container_of(kobj, struct device, kobj);
@@ -2488,7 +2489,8 @@ qlcnic_sysfs_read_crb(struct kobject *kobj, struct bin_attribute *attr,
2488} 2489}
2489 2490
2490static ssize_t 2491static ssize_t
2491qlcnic_sysfs_write_crb(struct kobject *kobj, struct bin_attribute *attr, 2492qlcnic_sysfs_write_crb(struct file *filp, struct kobject *kobj,
2493 struct bin_attribute *attr,
2492 char *buf, loff_t offset, size_t size) 2494 char *buf, loff_t offset, size_t size)
2493{ 2495{
2494 struct device *dev = container_of(kobj, struct device, kobj); 2496 struct device *dev = container_of(kobj, struct device, kobj);
@@ -2525,7 +2527,8 @@ qlcnic_sysfs_validate_mem(struct qlcnic_adapter *adapter,
2525} 2527}
2526 2528
2527static ssize_t 2529static ssize_t
2528qlcnic_sysfs_read_mem(struct kobject *kobj, struct bin_attribute *attr, 2530qlcnic_sysfs_read_mem(struct file *filp, struct kobject *kobj,
2531 struct bin_attribute *attr,
2529 char *buf, loff_t offset, size_t size) 2532 char *buf, loff_t offset, size_t size)
2530{ 2533{
2531 struct device *dev = container_of(kobj, struct device, kobj); 2534 struct device *dev = container_of(kobj, struct device, kobj);
@@ -2546,7 +2549,8 @@ qlcnic_sysfs_read_mem(struct kobject *kobj, struct bin_attribute *attr,
2546} 2549}
2547 2550
2548static ssize_t 2551static ssize_t
2549qlcnic_sysfs_write_mem(struct kobject *kobj, struct bin_attribute *attr, 2552qlcnic_sysfs_write_mem(struct file *filp, struct kobject *kobj,
2553 struct bin_attribute *attr,
2550 char *buf, loff_t offset, size_t size) 2554 char *buf, loff_t offset, size_t size)
2551{ 2555{
2552 struct device *dev = container_of(kobj, struct device, kobj); 2556 struct device *dev = container_of(kobj, struct device, kobj);
diff --git a/drivers/pci/hotplug/acpiphp_ibm.c b/drivers/pci/hotplug/acpiphp_ibm.c
index 6ecbfb27db9d..e525263210ee 100644
--- a/drivers/pci/hotplug/acpiphp_ibm.c
+++ b/drivers/pci/hotplug/acpiphp_ibm.c
@@ -108,7 +108,7 @@ static int ibm_set_attention_status(struct hotplug_slot *slot, u8 status);
108static int ibm_get_attention_status(struct hotplug_slot *slot, u8 *status); 108static int ibm_get_attention_status(struct hotplug_slot *slot, u8 *status);
109static void ibm_handle_events(acpi_handle handle, u32 event, void *context); 109static void ibm_handle_events(acpi_handle handle, u32 event, void *context);
110static int ibm_get_table_from_acpi(char **bufp); 110static int ibm_get_table_from_acpi(char **bufp);
111static ssize_t ibm_read_apci_table(struct kobject *kobj, 111static ssize_t ibm_read_apci_table(struct file *filp, struct kobject *kobj,
112 struct bin_attribute *bin_attr, 112 struct bin_attribute *bin_attr,
113 char *buffer, loff_t pos, size_t size); 113 char *buffer, loff_t pos, size_t size);
114static acpi_status __init ibm_find_acpi_device(acpi_handle handle, 114static acpi_status __init ibm_find_acpi_device(acpi_handle handle,
@@ -351,6 +351,7 @@ read_table_done:
351 351
352/** 352/**
353 * ibm_read_apci_table - callback for the sysfs apci_table file 353 * ibm_read_apci_table - callback for the sysfs apci_table file
354 * @filp: the open sysfs file
354 * @kobj: the kobject this binary attribute is a part of 355 * @kobj: the kobject this binary attribute is a part of
355 * @bin_attr: struct bin_attribute for this file 356 * @bin_attr: struct bin_attribute for this file
356 * @buffer: the kernel space buffer to fill 357 * @buffer: the kernel space buffer to fill
@@ -364,7 +365,7 @@ read_table_done:
364 * things get really tricky here... 365 * things get really tricky here...
365 * our solution is to only allow reading the table in all at once. 366 * our solution is to only allow reading the table in all at once.
366 */ 367 */
367static ssize_t ibm_read_apci_table(struct kobject *kobj, 368static ssize_t ibm_read_apci_table(struct file *filp, struct kobject *kobj,
368 struct bin_attribute *bin_attr, 369 struct bin_attribute *bin_attr,
369 char *buffer, loff_t pos, size_t size) 370 char *buffer, loff_t pos, size_t size)
370{ 371{
diff --git a/drivers/pci/pci-sysfs.c b/drivers/pci/pci-sysfs.c
index fad93983bfed..ad44557e65c4 100644
--- a/drivers/pci/pci-sysfs.c
+++ b/drivers/pci/pci-sysfs.c
@@ -357,7 +357,8 @@ boot_vga_show(struct device *dev, struct device_attribute *attr, char *buf)
357struct device_attribute vga_attr = __ATTR_RO(boot_vga); 357struct device_attribute vga_attr = __ATTR_RO(boot_vga);
358 358
359static ssize_t 359static ssize_t
360pci_read_config(struct kobject *kobj, struct bin_attribute *bin_attr, 360pci_read_config(struct file *filp, struct kobject *kobj,
361 struct bin_attribute *bin_attr,
361 char *buf, loff_t off, size_t count) 362 char *buf, loff_t off, size_t count)
362{ 363{
363 struct pci_dev *dev = to_pci_dev(container_of(kobj,struct device,kobj)); 364 struct pci_dev *dev = to_pci_dev(container_of(kobj,struct device,kobj));
@@ -430,7 +431,8 @@ pci_read_config(struct kobject *kobj, struct bin_attribute *bin_attr,
430} 431}
431 432
432static ssize_t 433static ssize_t
433pci_write_config(struct kobject *kobj, struct bin_attribute *bin_attr, 434pci_write_config(struct file* filp, struct kobject *kobj,
435 struct bin_attribute *bin_attr,
434 char *buf, loff_t off, size_t count) 436 char *buf, loff_t off, size_t count)
435{ 437{
436 struct pci_dev *dev = to_pci_dev(container_of(kobj,struct device,kobj)); 438 struct pci_dev *dev = to_pci_dev(container_of(kobj,struct device,kobj));
@@ -487,7 +489,8 @@ pci_write_config(struct kobject *kobj, struct bin_attribute *bin_attr,
487} 489}
488 490
489static ssize_t 491static ssize_t
490read_vpd_attr(struct kobject *kobj, struct bin_attribute *bin_attr, 492read_vpd_attr(struct file *filp, struct kobject *kobj,
493 struct bin_attribute *bin_attr,
491 char *buf, loff_t off, size_t count) 494 char *buf, loff_t off, size_t count)
492{ 495{
493 struct pci_dev *dev = 496 struct pci_dev *dev =
@@ -502,7 +505,8 @@ read_vpd_attr(struct kobject *kobj, struct bin_attribute *bin_attr,
502} 505}
503 506
504static ssize_t 507static ssize_t
505write_vpd_attr(struct kobject *kobj, struct bin_attribute *bin_attr, 508write_vpd_attr(struct file *filp, struct kobject *kobj,
509 struct bin_attribute *bin_attr,
506 char *buf, loff_t off, size_t count) 510 char *buf, loff_t off, size_t count)
507{ 511{
508 struct pci_dev *dev = 512 struct pci_dev *dev =
@@ -519,6 +523,7 @@ write_vpd_attr(struct kobject *kobj, struct bin_attribute *bin_attr,
519#ifdef HAVE_PCI_LEGACY 523#ifdef HAVE_PCI_LEGACY
520/** 524/**
521 * pci_read_legacy_io - read byte(s) from legacy I/O port space 525 * pci_read_legacy_io - read byte(s) from legacy I/O port space
526 * @filp: open sysfs file
522 * @kobj: kobject corresponding to file to read from 527 * @kobj: kobject corresponding to file to read from
523 * @bin_attr: struct bin_attribute for this file 528 * @bin_attr: struct bin_attribute for this file
524 * @buf: buffer to store results 529 * @buf: buffer to store results
@@ -529,7 +534,8 @@ write_vpd_attr(struct kobject *kobj, struct bin_attribute *bin_attr,
529 * callback routine (pci_legacy_read). 534 * callback routine (pci_legacy_read).
530 */ 535 */
531static ssize_t 536static ssize_t
532pci_read_legacy_io(struct kobject *kobj, struct bin_attribute *bin_attr, 537pci_read_legacy_io(struct file *filp, struct kobject *kobj,
538 struct bin_attribute *bin_attr,
533 char *buf, loff_t off, size_t count) 539 char *buf, loff_t off, size_t count)
534{ 540{
535 struct pci_bus *bus = to_pci_bus(container_of(kobj, 541 struct pci_bus *bus = to_pci_bus(container_of(kobj,
@@ -545,6 +551,7 @@ pci_read_legacy_io(struct kobject *kobj, struct bin_attribute *bin_attr,
545 551
546/** 552/**
547 * pci_write_legacy_io - write byte(s) to legacy I/O port space 553 * pci_write_legacy_io - write byte(s) to legacy I/O port space
554 * @filp: open sysfs file
548 * @kobj: kobject corresponding to file to read from 555 * @kobj: kobject corresponding to file to read from
549 * @bin_attr: struct bin_attribute for this file 556 * @bin_attr: struct bin_attribute for this file
550 * @buf: buffer containing value to be written 557 * @buf: buffer containing value to be written
@@ -555,7 +562,8 @@ pci_read_legacy_io(struct kobject *kobj, struct bin_attribute *bin_attr,
555 * callback routine (pci_legacy_write). 562 * callback routine (pci_legacy_write).
556 */ 563 */
557static ssize_t 564static ssize_t
558pci_write_legacy_io(struct kobject *kobj, struct bin_attribute *bin_attr, 565pci_write_legacy_io(struct file *filp, struct kobject *kobj,
566 struct bin_attribute *bin_attr,
559 char *buf, loff_t off, size_t count) 567 char *buf, loff_t off, size_t count)
560{ 568{
561 struct pci_bus *bus = to_pci_bus(container_of(kobj, 569 struct pci_bus *bus = to_pci_bus(container_of(kobj,
@@ -570,6 +578,7 @@ pci_write_legacy_io(struct kobject *kobj, struct bin_attribute *bin_attr,
570 578
571/** 579/**
572 * pci_mmap_legacy_mem - map legacy PCI memory into user memory space 580 * pci_mmap_legacy_mem - map legacy PCI memory into user memory space
581 * @filp: open sysfs file
573 * @kobj: kobject corresponding to device to be mapped 582 * @kobj: kobject corresponding to device to be mapped
574 * @attr: struct bin_attribute for this file 583 * @attr: struct bin_attribute for this file
575 * @vma: struct vm_area_struct passed to mmap 584 * @vma: struct vm_area_struct passed to mmap
@@ -579,7 +588,8 @@ pci_write_legacy_io(struct kobject *kobj, struct bin_attribute *bin_attr,
579 * memory space. 588 * memory space.
580 */ 589 */
581static int 590static int
582pci_mmap_legacy_mem(struct kobject *kobj, struct bin_attribute *attr, 591pci_mmap_legacy_mem(struct file *filp, struct kobject *kobj,
592 struct bin_attribute *attr,
583 struct vm_area_struct *vma) 593 struct vm_area_struct *vma)
584{ 594{
585 struct pci_bus *bus = to_pci_bus(container_of(kobj, 595 struct pci_bus *bus = to_pci_bus(container_of(kobj,
@@ -591,6 +601,7 @@ pci_mmap_legacy_mem(struct kobject *kobj, struct bin_attribute *attr,
591 601
592/** 602/**
593 * pci_mmap_legacy_io - map legacy PCI IO into user memory space 603 * pci_mmap_legacy_io - map legacy PCI IO into user memory space
604 * @filp: open sysfs file
594 * @kobj: kobject corresponding to device to be mapped 605 * @kobj: kobject corresponding to device to be mapped
595 * @attr: struct bin_attribute for this file 606 * @attr: struct bin_attribute for this file
596 * @vma: struct vm_area_struct passed to mmap 607 * @vma: struct vm_area_struct passed to mmap
@@ -600,7 +611,8 @@ pci_mmap_legacy_mem(struct kobject *kobj, struct bin_attribute *attr,
600 * memory space. Returns -ENOSYS if the operation isn't supported 611 * memory space. Returns -ENOSYS if the operation isn't supported
601 */ 612 */
602static int 613static int
603pci_mmap_legacy_io(struct kobject *kobj, struct bin_attribute *attr, 614pci_mmap_legacy_io(struct file *filp, struct kobject *kobj,
615 struct bin_attribute *attr,
604 struct vm_area_struct *vma) 616 struct vm_area_struct *vma)
605{ 617{
606 struct pci_bus *bus = to_pci_bus(container_of(kobj, 618 struct pci_bus *bus = to_pci_bus(container_of(kobj,
@@ -750,14 +762,16 @@ pci_mmap_resource(struct kobject *kobj, struct bin_attribute *attr,
750} 762}
751 763
752static int 764static int
753pci_mmap_resource_uc(struct kobject *kobj, struct bin_attribute *attr, 765pci_mmap_resource_uc(struct file *filp, struct kobject *kobj,
766 struct bin_attribute *attr,
754 struct vm_area_struct *vma) 767 struct vm_area_struct *vma)
755{ 768{
756 return pci_mmap_resource(kobj, attr, vma, 0); 769 return pci_mmap_resource(kobj, attr, vma, 0);
757} 770}
758 771
759static int 772static int
760pci_mmap_resource_wc(struct kobject *kobj, struct bin_attribute *attr, 773pci_mmap_resource_wc(struct file *filp, struct kobject *kobj,
774 struct bin_attribute *attr,
761 struct vm_area_struct *vma) 775 struct vm_area_struct *vma)
762{ 776{
763 return pci_mmap_resource(kobj, attr, vma, 1); 777 return pci_mmap_resource(kobj, attr, vma, 1);
@@ -861,6 +875,7 @@ void __weak pci_remove_resource_files(struct pci_dev *dev) { return; }
861 875
862/** 876/**
863 * pci_write_rom - used to enable access to the PCI ROM display 877 * pci_write_rom - used to enable access to the PCI ROM display
878 * @filp: sysfs file
864 * @kobj: kernel object handle 879 * @kobj: kernel object handle
865 * @bin_attr: struct bin_attribute for this file 880 * @bin_attr: struct bin_attribute for this file
866 * @buf: user input 881 * @buf: user input
@@ -870,7 +885,8 @@ void __weak pci_remove_resource_files(struct pci_dev *dev) { return; }
870 * writing anything except 0 enables it 885 * writing anything except 0 enables it
871 */ 886 */
872static ssize_t 887static ssize_t
873pci_write_rom(struct kobject *kobj, struct bin_attribute *bin_attr, 888pci_write_rom(struct file *filp, struct kobject *kobj,
889 struct bin_attribute *bin_attr,
874 char *buf, loff_t off, size_t count) 890 char *buf, loff_t off, size_t count)
875{ 891{
876 struct pci_dev *pdev = to_pci_dev(container_of(kobj, struct device, kobj)); 892 struct pci_dev *pdev = to_pci_dev(container_of(kobj, struct device, kobj));
@@ -885,6 +901,7 @@ pci_write_rom(struct kobject *kobj, struct bin_attribute *bin_attr,
885 901
886/** 902/**
887 * pci_read_rom - read a PCI ROM 903 * pci_read_rom - read a PCI ROM
904 * @filp: sysfs file
888 * @kobj: kernel object handle 905 * @kobj: kernel object handle
889 * @bin_attr: struct bin_attribute for this file 906 * @bin_attr: struct bin_attribute for this file
890 * @buf: where to put the data we read from the ROM 907 * @buf: where to put the data we read from the ROM
@@ -895,7 +912,8 @@ pci_write_rom(struct kobject *kobj, struct bin_attribute *bin_attr,
895 * device corresponding to @kobj. 912 * device corresponding to @kobj.
896 */ 913 */
897static ssize_t 914static ssize_t
898pci_read_rom(struct kobject *kobj, struct bin_attribute *bin_attr, 915pci_read_rom(struct file *filp, struct kobject *kobj,
916 struct bin_attribute *bin_attr,
899 char *buf, loff_t off, size_t count) 917 char *buf, loff_t off, size_t count)
900{ 918{
901 struct pci_dev *pdev = to_pci_dev(container_of(kobj, struct device, kobj)); 919 struct pci_dev *pdev = to_pci_dev(container_of(kobj, struct device, kobj));
diff --git a/drivers/pcmcia/cistpl.c b/drivers/pcmcia/cistpl.c
index 60d428be0b07..8844bc3e3118 100644
--- a/drivers/pcmcia/cistpl.c
+++ b/drivers/pcmcia/cistpl.c
@@ -1531,7 +1531,7 @@ static ssize_t pccard_extract_cis(struct pcmcia_socket *s, char *buf,
1531} 1531}
1532 1532
1533 1533
1534static ssize_t pccard_show_cis(struct kobject *kobj, 1534static ssize_t pccard_show_cis(struct file *filp, struct kobject *kobj,
1535 struct bin_attribute *bin_attr, 1535 struct bin_attribute *bin_attr,
1536 char *buf, loff_t off, size_t count) 1536 char *buf, loff_t off, size_t count)
1537{ 1537{
@@ -1562,7 +1562,7 @@ static ssize_t pccard_show_cis(struct kobject *kobj,
1562} 1562}
1563 1563
1564 1564
1565static ssize_t pccard_store_cis(struct kobject *kobj, 1565static ssize_t pccard_store_cis(struct file *filp, struct kobject *kobj,
1566 struct bin_attribute *bin_attr, 1566 struct bin_attribute *bin_attr,
1567 char *buf, loff_t off, size_t count) 1567 char *buf, loff_t off, size_t count)
1568{ 1568{
diff --git a/drivers/power/olpc_battery.c b/drivers/power/olpc_battery.c
index 8fefe5a73558..baefcf1cffc9 100644
--- a/drivers/power/olpc_battery.c
+++ b/drivers/power/olpc_battery.c
@@ -354,7 +354,7 @@ static enum power_supply_property olpc_bat_props[] = {
354#define EEPROM_END 0x80 354#define EEPROM_END 0x80
355#define EEPROM_SIZE (EEPROM_END - EEPROM_START) 355#define EEPROM_SIZE (EEPROM_END - EEPROM_START)
356 356
357static ssize_t olpc_bat_eeprom_read(struct kobject *kobj, 357static ssize_t olpc_bat_eeprom_read(struct file *filp, struct kobject *kobj,
358 struct bin_attribute *attr, char *buf, loff_t off, size_t count) 358 struct bin_attribute *attr, char *buf, loff_t off, size_t count)
359{ 359{
360 uint8_t ec_byte; 360 uint8_t ec_byte;
diff --git a/drivers/rapidio/rio-sysfs.c b/drivers/rapidio/rio-sysfs.c
index ba742e82c57d..00b475658356 100644
--- a/drivers/rapidio/rio-sysfs.c
+++ b/drivers/rapidio/rio-sysfs.c
@@ -68,7 +68,8 @@ struct device_attribute rio_dev_attrs[] = {
68}; 68};
69 69
70static ssize_t 70static ssize_t
71rio_read_config(struct kobject *kobj, struct bin_attribute *bin_attr, 71rio_read_config(struct file *filp, struct kobject *kobj,
72 struct bin_attribute *bin_attr,
72 char *buf, loff_t off, size_t count) 73 char *buf, loff_t off, size_t count)
73{ 74{
74 struct rio_dev *dev = 75 struct rio_dev *dev =
@@ -139,7 +140,8 @@ rio_read_config(struct kobject *kobj, struct bin_attribute *bin_attr,
139} 140}
140 141
141static ssize_t 142static ssize_t
142rio_write_config(struct kobject *kobj, struct bin_attribute *bin_attr, 143rio_write_config(struct file *filp, struct kobject *kobj,
144 struct bin_attribute *bin_attr,
143 char *buf, loff_t off, size_t count) 145 char *buf, loff_t off, size_t count)
144{ 146{
145 struct rio_dev *dev = 147 struct rio_dev *dev =
diff --git a/drivers/rtc/rtc-cmos.c b/drivers/rtc/rtc-cmos.c
index e9aa814ddd23..ece4dbddc0ea 100644
--- a/drivers/rtc/rtc-cmos.c
+++ b/drivers/rtc/rtc-cmos.c
@@ -519,7 +519,8 @@ static const struct rtc_class_ops cmos_rtc_ops = {
519#define NVRAM_OFFSET (RTC_REG_D + 1) 519#define NVRAM_OFFSET (RTC_REG_D + 1)
520 520
521static ssize_t 521static ssize_t
522cmos_nvram_read(struct kobject *kobj, struct bin_attribute *attr, 522cmos_nvram_read(struct file *filp, struct kobject *kobj,
523 struct bin_attribute *attr,
523 char *buf, loff_t off, size_t count) 524 char *buf, loff_t off, size_t count)
524{ 525{
525 int retval; 526 int retval;
@@ -547,7 +548,8 @@ cmos_nvram_read(struct kobject *kobj, struct bin_attribute *attr,
547} 548}
548 549
549static ssize_t 550static ssize_t
550cmos_nvram_write(struct kobject *kobj, struct bin_attribute *attr, 551cmos_nvram_write(struct file *filp, struct kobject *kobj,
552 struct bin_attribute *attr,
551 char *buf, loff_t off, size_t count) 553 char *buf, loff_t off, size_t count)
552{ 554{
553 struct cmos_rtc *cmos; 555 struct cmos_rtc *cmos;
diff --git a/drivers/rtc/rtc-ds1305.c b/drivers/rtc/rtc-ds1305.c
index 7836c9cec557..48da85e97ca4 100644
--- a/drivers/rtc/rtc-ds1305.c
+++ b/drivers/rtc/rtc-ds1305.c
@@ -542,7 +542,8 @@ static void msg_init(struct spi_message *m, struct spi_transfer *x,
542} 542}
543 543
544static ssize_t 544static ssize_t
545ds1305_nvram_read(struct kobject *kobj, struct bin_attribute *attr, 545ds1305_nvram_read(struct file *filp, struct kobject *kobj,
546 struct bin_attribute *attr,
546 char *buf, loff_t off, size_t count) 547 char *buf, loff_t off, size_t count)
547{ 548{
548 struct spi_device *spi; 549 struct spi_device *spi;
@@ -572,7 +573,8 @@ ds1305_nvram_read(struct kobject *kobj, struct bin_attribute *attr,
572} 573}
573 574
574static ssize_t 575static ssize_t
575ds1305_nvram_write(struct kobject *kobj, struct bin_attribute *attr, 576ds1305_nvram_write(struct file *filp, struct kobject *kobj,
577 struct bin_attribute *attr,
576 char *buf, loff_t off, size_t count) 578 char *buf, loff_t off, size_t count)
577{ 579{
578 struct spi_device *spi; 580 struct spi_device *spi;
diff --git a/drivers/rtc/rtc-ds1307.c b/drivers/rtc/rtc-ds1307.c
index c4ec5c158aa1..de033b7ac21f 100644
--- a/drivers/rtc/rtc-ds1307.c
+++ b/drivers/rtc/rtc-ds1307.c
@@ -556,7 +556,8 @@ static const struct rtc_class_ops ds13xx_rtc_ops = {
556#define NVRAM_SIZE 56 556#define NVRAM_SIZE 56
557 557
558static ssize_t 558static ssize_t
559ds1307_nvram_read(struct kobject *kobj, struct bin_attribute *attr, 559ds1307_nvram_read(struct file *filp, struct kobject *kobj,
560 struct bin_attribute *attr,
560 char *buf, loff_t off, size_t count) 561 char *buf, loff_t off, size_t count)
561{ 562{
562 struct i2c_client *client; 563 struct i2c_client *client;
@@ -580,7 +581,8 @@ ds1307_nvram_read(struct kobject *kobj, struct bin_attribute *attr,
580} 581}
581 582
582static ssize_t 583static ssize_t
583ds1307_nvram_write(struct kobject *kobj, struct bin_attribute *attr, 584ds1307_nvram_write(struct file *filp, struct kobject *kobj,
585 struct bin_attribute *attr,
584 char *buf, loff_t off, size_t count) 586 char *buf, loff_t off, size_t count)
585{ 587{
586 struct i2c_client *client; 588 struct i2c_client *client;
diff --git a/drivers/rtc/rtc-ds1511.c b/drivers/rtc/rtc-ds1511.c
index 06b8566c4532..37268e97de49 100644
--- a/drivers/rtc/rtc-ds1511.c
+++ b/drivers/rtc/rtc-ds1511.c
@@ -423,8 +423,9 @@ static const struct rtc_class_ops ds1511_rtc_ops = {
423}; 423};
424 424
425 static ssize_t 425 static ssize_t
426ds1511_nvram_read(struct kobject *kobj, struct bin_attribute *ba, 426ds1511_nvram_read(struct file *filp, struct kobject *kobj,
427 char *buf, loff_t pos, size_t size) 427 struct bin_attribute *ba,
428 char *buf, loff_t pos, size_t size)
428{ 429{
429 ssize_t count; 430 ssize_t count;
430 431
@@ -452,8 +453,9 @@ ds1511_nvram_read(struct kobject *kobj, struct bin_attribute *ba,
452} 453}
453 454
454 static ssize_t 455 static ssize_t
455ds1511_nvram_write(struct kobject *kobj, struct bin_attribute *bin_attr, 456ds1511_nvram_write(struct file *filp, struct kobject *kobj,
456 char *buf, loff_t pos, size_t size) 457 struct bin_attribute *bin_attr,
458 char *buf, loff_t pos, size_t size)
457{ 459{
458 ssize_t count; 460 ssize_t count;
459 461
diff --git a/drivers/rtc/rtc-ds1553.c b/drivers/rtc/rtc-ds1553.c
index 244f9994bcbb..ff432e2ca275 100644
--- a/drivers/rtc/rtc-ds1553.c
+++ b/drivers/rtc/rtc-ds1553.c
@@ -252,7 +252,7 @@ static const struct rtc_class_ops ds1553_rtc_ops = {
252 .update_irq_enable = ds1553_rtc_update_irq_enable, 252 .update_irq_enable = ds1553_rtc_update_irq_enable,
253}; 253};
254 254
255static ssize_t ds1553_nvram_read(struct kobject *kobj, 255static ssize_t ds1553_nvram_read(struct file *filp, struct kobject *kobj,
256 struct bin_attribute *bin_attr, 256 struct bin_attribute *bin_attr,
257 char *buf, loff_t pos, size_t size) 257 char *buf, loff_t pos, size_t size)
258{ 258{
@@ -267,7 +267,7 @@ static ssize_t ds1553_nvram_read(struct kobject *kobj,
267 return count; 267 return count;
268} 268}
269 269
270static ssize_t ds1553_nvram_write(struct kobject *kobj, 270static ssize_t ds1553_nvram_write(struct file *filp, struct kobject *kobj,
271 struct bin_attribute *bin_attr, 271 struct bin_attribute *bin_attr,
272 char *buf, loff_t pos, size_t size) 272 char *buf, loff_t pos, size_t size)
273{ 273{
diff --git a/drivers/rtc/rtc-ds1742.c b/drivers/rtc/rtc-ds1742.c
index 2b4b0bc42d6f..042630c90dd3 100644
--- a/drivers/rtc/rtc-ds1742.c
+++ b/drivers/rtc/rtc-ds1742.c
@@ -128,7 +128,7 @@ static const struct rtc_class_ops ds1742_rtc_ops = {
128 .set_time = ds1742_rtc_set_time, 128 .set_time = ds1742_rtc_set_time,
129}; 129};
130 130
131static ssize_t ds1742_nvram_read(struct kobject *kobj, 131static ssize_t ds1742_nvram_read(struct file *filp, struct kobject *kobj,
132 struct bin_attribute *bin_attr, 132 struct bin_attribute *bin_attr,
133 char *buf, loff_t pos, size_t size) 133 char *buf, loff_t pos, size_t size)
134{ 134{
@@ -143,7 +143,7 @@ static ssize_t ds1742_nvram_read(struct kobject *kobj,
143 return count; 143 return count;
144} 144}
145 145
146static ssize_t ds1742_nvram_write(struct kobject *kobj, 146static ssize_t ds1742_nvram_write(struct file *filp, struct kobject *kobj,
147 struct bin_attribute *bin_attr, 147 struct bin_attribute *bin_attr,
148 char *buf, loff_t pos, size_t size) 148 char *buf, loff_t pos, size_t size)
149{ 149{
diff --git a/drivers/rtc/rtc-m48t59.c b/drivers/rtc/rtc-m48t59.c
index 365ff3ac2348..be8359fdb65a 100644
--- a/drivers/rtc/rtc-m48t59.c
+++ b/drivers/rtc/rtc-m48t59.c
@@ -343,7 +343,7 @@ static const struct rtc_class_ops m48t02_rtc_ops = {
343 .set_time = m48t59_rtc_set_time, 343 .set_time = m48t59_rtc_set_time,
344}; 344};
345 345
346static ssize_t m48t59_nvram_read(struct kobject *kobj, 346static ssize_t m48t59_nvram_read(struct file *filp, struct kobject *kobj,
347 struct bin_attribute *bin_attr, 347 struct bin_attribute *bin_attr,
348 char *buf, loff_t pos, size_t size) 348 char *buf, loff_t pos, size_t size)
349{ 349{
@@ -363,7 +363,7 @@ static ssize_t m48t59_nvram_read(struct kobject *kobj,
363 return cnt; 363 return cnt;
364} 364}
365 365
366static ssize_t m48t59_nvram_write(struct kobject *kobj, 366static ssize_t m48t59_nvram_write(struct file *filp, struct kobject *kobj,
367 struct bin_attribute *bin_attr, 367 struct bin_attribute *bin_attr,
368 char *buf, loff_t pos, size_t size) 368 char *buf, loff_t pos, size_t size)
369{ 369{
diff --git a/drivers/rtc/rtc-stk17ta8.c b/drivers/rtc/rtc-stk17ta8.c
index b53a00198dbe..3b943673cd3e 100644
--- a/drivers/rtc/rtc-stk17ta8.c
+++ b/drivers/rtc/rtc-stk17ta8.c
@@ -244,7 +244,7 @@ static const struct rtc_class_ops stk17ta8_rtc_ops = {
244 .alarm_irq_enable = stk17ta8_rtc_alarm_irq_enable, 244 .alarm_irq_enable = stk17ta8_rtc_alarm_irq_enable,
245}; 245};
246 246
247static ssize_t stk17ta8_nvram_read(struct kobject *kobj, 247static ssize_t stk17ta8_nvram_read(struct file *filp, struct kobject *kobj,
248 struct bin_attribute *attr, char *buf, 248 struct bin_attribute *attr, char *buf,
249 loff_t pos, size_t size) 249 loff_t pos, size_t size)
250{ 250{
@@ -259,7 +259,7 @@ static ssize_t stk17ta8_nvram_read(struct kobject *kobj,
259 return count; 259 return count;
260} 260}
261 261
262static ssize_t stk17ta8_nvram_write(struct kobject *kobj, 262static ssize_t stk17ta8_nvram_write(struct file *filp, struct kobject *kobj,
263 struct bin_attribute *attr, char *buf, 263 struct bin_attribute *attr, char *buf,
264 loff_t pos, size_t size) 264 loff_t pos, size_t size)
265{ 265{
diff --git a/drivers/rtc/rtc-tx4939.c b/drivers/rtc/rtc-tx4939.c
index 20bfc64a15c8..ec6313d15359 100644
--- a/drivers/rtc/rtc-tx4939.c
+++ b/drivers/rtc/rtc-tx4939.c
@@ -188,7 +188,7 @@ static const struct rtc_class_ops tx4939_rtc_ops = {
188 .alarm_irq_enable = tx4939_rtc_alarm_irq_enable, 188 .alarm_irq_enable = tx4939_rtc_alarm_irq_enable,
189}; 189};
190 190
191static ssize_t tx4939_rtc_nvram_read(struct kobject *kobj, 191static ssize_t tx4939_rtc_nvram_read(struct file *filp, struct kobject *kobj,
192 struct bin_attribute *bin_attr, 192 struct bin_attribute *bin_attr,
193 char *buf, loff_t pos, size_t size) 193 char *buf, loff_t pos, size_t size)
194{ 194{
@@ -207,7 +207,7 @@ static ssize_t tx4939_rtc_nvram_read(struct kobject *kobj,
207 return count; 207 return count;
208} 208}
209 209
210static ssize_t tx4939_rtc_nvram_write(struct kobject *kobj, 210static ssize_t tx4939_rtc_nvram_write(struct file *filp, struct kobject *kobj,
211 struct bin_attribute *bin_attr, 211 struct bin_attribute *bin_attr,
212 char *buf, loff_t pos, size_t size) 212 char *buf, loff_t pos, size_t size)
213{ 213{
diff --git a/drivers/s390/cio/chp.c b/drivers/s390/cio/chp.c
index 1d16189f2f2d..6c9fa15aac7b 100644
--- a/drivers/s390/cio/chp.c
+++ b/drivers/s390/cio/chp.c
@@ -135,7 +135,8 @@ static int s390_vary_chpid(struct chp_id chpid, int on)
135/* 135/*
136 * Channel measurement related functions 136 * Channel measurement related functions
137 */ 137 */
138static ssize_t chp_measurement_chars_read(struct kobject *kobj, 138static ssize_t chp_measurement_chars_read(struct file *filp,
139 struct kobject *kobj,
139 struct bin_attribute *bin_attr, 140 struct bin_attribute *bin_attr,
140 char *buf, loff_t off, size_t count) 141 char *buf, loff_t off, size_t count)
141{ 142{
@@ -182,7 +183,7 @@ static void chp_measurement_copy_block(struct cmg_entry *buf,
182 } while (reference_buf.values[0] != buf->values[0]); 183 } while (reference_buf.values[0] != buf->values[0]);
183} 184}
184 185
185static ssize_t chp_measurement_read(struct kobject *kobj, 186static ssize_t chp_measurement_read(struct file *filp, struct kobject *kobj,
186 struct bin_attribute *bin_attr, 187 struct bin_attribute *bin_attr,
187 char *buf, loff_t off, size_t count) 188 char *buf, loff_t off, size_t count)
188{ 189{
diff --git a/drivers/scsi/3w-sas.c b/drivers/scsi/3w-sas.c
index 54c5ffb1eaa1..d38000db9237 100644
--- a/drivers/scsi/3w-sas.c
+++ b/drivers/scsi/3w-sas.c
@@ -98,7 +98,7 @@ static int twl_reset_device_extension(TW_Device_Extension *tw_dev, int ioctl_res
98/* Functions */ 98/* Functions */
99 99
100/* This function returns AENs through sysfs */ 100/* This function returns AENs through sysfs */
101static ssize_t twl_sysfs_aen_read(struct kobject *kobj, 101static ssize_t twl_sysfs_aen_read(struct file *filp, struct kobject *kobj,
102 struct bin_attribute *bin_attr, 102 struct bin_attribute *bin_attr,
103 char *outbuf, loff_t offset, size_t count) 103 char *outbuf, loff_t offset, size_t count)
104{ 104{
@@ -129,7 +129,7 @@ static struct bin_attribute twl_sysfs_aen_read_attr = {
129}; 129};
130 130
131/* This function returns driver compatibility info through sysfs */ 131/* This function returns driver compatibility info through sysfs */
132static ssize_t twl_sysfs_compat_info(struct kobject *kobj, 132static ssize_t twl_sysfs_compat_info(struct file *filp, struct kobject *kobj,
133 struct bin_attribute *bin_attr, 133 struct bin_attribute *bin_attr,
134 char *outbuf, loff_t offset, size_t count) 134 char *outbuf, loff_t offset, size_t count)
135{ 135{
diff --git a/drivers/scsi/arcmsr/arcmsr_attr.c b/drivers/scsi/arcmsr/arcmsr_attr.c
index 5877f29a6005..a4e04c50c436 100644
--- a/drivers/scsi/arcmsr/arcmsr_attr.c
+++ b/drivers/scsi/arcmsr/arcmsr_attr.c
@@ -59,7 +59,8 @@
59 59
60struct device_attribute *arcmsr_host_attrs[]; 60struct device_attribute *arcmsr_host_attrs[];
61 61
62static ssize_t arcmsr_sysfs_iop_message_read(struct kobject *kobj, 62static ssize_t arcmsr_sysfs_iop_message_read(struct file *filp,
63 struct kobject *kobj,
63 struct bin_attribute *bin, 64 struct bin_attribute *bin,
64 char *buf, loff_t off, 65 char *buf, loff_t off,
65 size_t count) 66 size_t count)
@@ -105,7 +106,8 @@ static ssize_t arcmsr_sysfs_iop_message_read(struct kobject *kobj,
105 return (allxfer_len); 106 return (allxfer_len);
106} 107}
107 108
108static ssize_t arcmsr_sysfs_iop_message_write(struct kobject *kobj, 109static ssize_t arcmsr_sysfs_iop_message_write(struct file *filp,
110 struct kobject *kobj,
109 struct bin_attribute *bin, 111 struct bin_attribute *bin,
110 char *buf, loff_t off, 112 char *buf, loff_t off,
111 size_t count) 113 size_t count)
@@ -153,7 +155,8 @@ static ssize_t arcmsr_sysfs_iop_message_write(struct kobject *kobj,
153 } 155 }
154} 156}
155 157
156static ssize_t arcmsr_sysfs_iop_message_clear(struct kobject *kobj, 158static ssize_t arcmsr_sysfs_iop_message_clear(struct file *filp,
159 struct kobject *kobj,
157 struct bin_attribute *bin, 160 struct bin_attribute *bin,
158 char *buf, loff_t off, 161 char *buf, loff_t off,
159 size_t count) 162 size_t count)
diff --git a/drivers/scsi/ibmvscsi/ibmvfc.c b/drivers/scsi/ibmvscsi/ibmvfc.c
index d18f45c95639..3eb2b7b3d8b0 100644
--- a/drivers/scsi/ibmvscsi/ibmvfc.c
+++ b/drivers/scsi/ibmvscsi/ibmvfc.c
@@ -2919,6 +2919,7 @@ static DEVICE_ATTR(log_level, S_IRUGO | S_IWUSR,
2919#ifdef CONFIG_SCSI_IBMVFC_TRACE 2919#ifdef CONFIG_SCSI_IBMVFC_TRACE
2920/** 2920/**
2921 * ibmvfc_read_trace - Dump the adapter trace 2921 * ibmvfc_read_trace - Dump the adapter trace
2922 * @filp: open sysfs file
2922 * @kobj: kobject struct 2923 * @kobj: kobject struct
2923 * @bin_attr: bin_attribute struct 2924 * @bin_attr: bin_attribute struct
2924 * @buf: buffer 2925 * @buf: buffer
@@ -2928,7 +2929,7 @@ static DEVICE_ATTR(log_level, S_IRUGO | S_IWUSR,
2928 * Return value: 2929 * Return value:
2929 * number of bytes printed to buffer 2930 * number of bytes printed to buffer
2930 **/ 2931 **/
2931static ssize_t ibmvfc_read_trace(struct kobject *kobj, 2932static ssize_t ibmvfc_read_trace(struct file *filp, struct kobject *kobj,
2932 struct bin_attribute *bin_attr, 2933 struct bin_attribute *bin_attr,
2933 char *buf, loff_t off, size_t count) 2934 char *buf, loff_t off, size_t count)
2934{ 2935{
diff --git a/drivers/scsi/ipr.c b/drivers/scsi/ipr.c
index b90c118119d7..6a6661c35b2f 100644
--- a/drivers/scsi/ipr.c
+++ b/drivers/scsi/ipr.c
@@ -3120,6 +3120,7 @@ restart:
3120#ifdef CONFIG_SCSI_IPR_TRACE 3120#ifdef CONFIG_SCSI_IPR_TRACE
3121/** 3121/**
3122 * ipr_read_trace - Dump the adapter trace 3122 * ipr_read_trace - Dump the adapter trace
3123 * @filp: open sysfs file
3123 * @kobj: kobject struct 3124 * @kobj: kobject struct
3124 * @bin_attr: bin_attribute struct 3125 * @bin_attr: bin_attribute struct
3125 * @buf: buffer 3126 * @buf: buffer
@@ -3129,7 +3130,7 @@ restart:
3129 * Return value: 3130 * Return value:
3130 * number of bytes printed to buffer 3131 * number of bytes printed to buffer
3131 **/ 3132 **/
3132static ssize_t ipr_read_trace(struct kobject *kobj, 3133static ssize_t ipr_read_trace(struct file *filp, struct kobject *kobj,
3133 struct bin_attribute *bin_attr, 3134 struct bin_attribute *bin_attr,
3134 char *buf, loff_t off, size_t count) 3135 char *buf, loff_t off, size_t count)
3135{ 3136{
@@ -3764,6 +3765,7 @@ static struct device_attribute *ipr_ioa_attrs[] = {
3764#ifdef CONFIG_SCSI_IPR_DUMP 3765#ifdef CONFIG_SCSI_IPR_DUMP
3765/** 3766/**
3766 * ipr_read_dump - Dump the adapter 3767 * ipr_read_dump - Dump the adapter
3768 * @filp: open sysfs file
3767 * @kobj: kobject struct 3769 * @kobj: kobject struct
3768 * @bin_attr: bin_attribute struct 3770 * @bin_attr: bin_attribute struct
3769 * @buf: buffer 3771 * @buf: buffer
@@ -3773,7 +3775,7 @@ static struct device_attribute *ipr_ioa_attrs[] = {
3773 * Return value: 3775 * Return value:
3774 * number of bytes printed to buffer 3776 * number of bytes printed to buffer
3775 **/ 3777 **/
3776static ssize_t ipr_read_dump(struct kobject *kobj, 3778static ssize_t ipr_read_dump(struct file *filp, struct kobject *kobj,
3777 struct bin_attribute *bin_attr, 3779 struct bin_attribute *bin_attr,
3778 char *buf, loff_t off, size_t count) 3780 char *buf, loff_t off, size_t count)
3779{ 3781{
@@ -3927,6 +3929,7 @@ static int ipr_free_dump(struct ipr_ioa_cfg *ioa_cfg)
3927 3929
3928/** 3930/**
3929 * ipr_write_dump - Setup dump state of adapter 3931 * ipr_write_dump - Setup dump state of adapter
3932 * @filp: open sysfs file
3930 * @kobj: kobject struct 3933 * @kobj: kobject struct
3931 * @bin_attr: bin_attribute struct 3934 * @bin_attr: bin_attribute struct
3932 * @buf: buffer 3935 * @buf: buffer
@@ -3936,7 +3939,7 @@ static int ipr_free_dump(struct ipr_ioa_cfg *ioa_cfg)
3936 * Return value: 3939 * Return value:
3937 * number of bytes printed to buffer 3940 * number of bytes printed to buffer
3938 **/ 3941 **/
3939static ssize_t ipr_write_dump(struct kobject *kobj, 3942static ssize_t ipr_write_dump(struct file *filp, struct kobject *kobj,
3940 struct bin_attribute *bin_attr, 3943 struct bin_attribute *bin_attr,
3941 char *buf, loff_t off, size_t count) 3944 char *buf, loff_t off, size_t count)
3942{ 3945{
diff --git a/drivers/scsi/lpfc/lpfc_attr.c b/drivers/scsi/lpfc/lpfc_attr.c
index 2e5f376d9ccc..bf33b315f93e 100644
--- a/drivers/scsi/lpfc/lpfc_attr.c
+++ b/drivers/scsi/lpfc/lpfc_attr.c
@@ -2643,6 +2643,7 @@ static DEVICE_ATTR(lpfc_stat_data_ctrl, S_IRUGO | S_IWUSR,
2643 2643
2644/** 2644/**
2645 * sysfs_drvr_stat_data_read - Read function for lpfc_drvr_stat_data attribute 2645 * sysfs_drvr_stat_data_read - Read function for lpfc_drvr_stat_data attribute
2646 * @filp: sysfs file
2646 * @kobj: Pointer to the kernel object 2647 * @kobj: Pointer to the kernel object
2647 * @bin_attr: Attribute object 2648 * @bin_attr: Attribute object
2648 * @buff: Buffer pointer 2649 * @buff: Buffer pointer
@@ -2654,7 +2655,8 @@ static DEVICE_ATTR(lpfc_stat_data_ctrl, S_IRUGO | S_IWUSR,
2654 * applications. 2655 * applications.
2655 **/ 2656 **/
2656static ssize_t 2657static ssize_t
2657sysfs_drvr_stat_data_read(struct kobject *kobj, struct bin_attribute *bin_attr, 2658sysfs_drvr_stat_data_read(struct file *filp, struct kobject *kobj,
2659 struct bin_attribute *bin_attr,
2658 char *buf, loff_t off, size_t count) 2660 char *buf, loff_t off, size_t count)
2659{ 2661{
2660 struct device *dev = container_of(kobj, struct device, 2662 struct device *dev = container_of(kobj, struct device,
@@ -3362,6 +3364,7 @@ struct device_attribute *lpfc_vport_attrs[] = {
3362 3364
3363/** 3365/**
3364 * sysfs_ctlreg_write - Write method for writing to ctlreg 3366 * sysfs_ctlreg_write - Write method for writing to ctlreg
3367 * @filp: open sysfs file
3365 * @kobj: kernel kobject that contains the kernel class device. 3368 * @kobj: kernel kobject that contains the kernel class device.
3366 * @bin_attr: kernel attributes passed to us. 3369 * @bin_attr: kernel attributes passed to us.
3367 * @buf: contains the data to be written to the adapter IOREG space. 3370 * @buf: contains the data to be written to the adapter IOREG space.
@@ -3379,7 +3382,8 @@ struct device_attribute *lpfc_vport_attrs[] = {
3379 * value of count, buf contents written 3382 * value of count, buf contents written
3380 **/ 3383 **/
3381static ssize_t 3384static ssize_t
3382sysfs_ctlreg_write(struct kobject *kobj, struct bin_attribute *bin_attr, 3385sysfs_ctlreg_write(struct file *filp, struct kobject *kobj,
3386 struct bin_attribute *bin_attr,
3383 char *buf, loff_t off, size_t count) 3387 char *buf, loff_t off, size_t count)
3384{ 3388{
3385 size_t buf_off; 3389 size_t buf_off;
@@ -3415,6 +3419,7 @@ sysfs_ctlreg_write(struct kobject *kobj, struct bin_attribute *bin_attr,
3415 3419
3416/** 3420/**
3417 * sysfs_ctlreg_read - Read method for reading from ctlreg 3421 * sysfs_ctlreg_read - Read method for reading from ctlreg
3422 * @filp: open sysfs file
3418 * @kobj: kernel kobject that contains the kernel class device. 3423 * @kobj: kernel kobject that contains the kernel class device.
3419 * @bin_attr: kernel attributes passed to us. 3424 * @bin_attr: kernel attributes passed to us.
3420 * @buf: if successful contains the data from the adapter IOREG space. 3425 * @buf: if successful contains the data from the adapter IOREG space.
@@ -3431,7 +3436,8 @@ sysfs_ctlreg_write(struct kobject *kobj, struct bin_attribute *bin_attr,
3431 * value of count, buf contents read 3436 * value of count, buf contents read
3432 **/ 3437 **/
3433static ssize_t 3438static ssize_t
3434sysfs_ctlreg_read(struct kobject *kobj, struct bin_attribute *bin_attr, 3439sysfs_ctlreg_read(struct file *filp, struct kobject *kobj,
3440 struct bin_attribute *bin_attr,
3435 char *buf, loff_t off, size_t count) 3441 char *buf, loff_t off, size_t count)
3436{ 3442{
3437 size_t buf_off; 3443 size_t buf_off;
@@ -3496,6 +3502,7 @@ sysfs_mbox_idle(struct lpfc_hba *phba)
3496 3502
3497/** 3503/**
3498 * sysfs_mbox_write - Write method for writing information via mbox 3504 * sysfs_mbox_write - Write method for writing information via mbox
3505 * @filp: open sysfs file
3499 * @kobj: kernel kobject that contains the kernel class device. 3506 * @kobj: kernel kobject that contains the kernel class device.
3500 * @bin_attr: kernel attributes passed to us. 3507 * @bin_attr: kernel attributes passed to us.
3501 * @buf: contains the data to be written to sysfs mbox. 3508 * @buf: contains the data to be written to sysfs mbox.
@@ -3516,7 +3523,8 @@ sysfs_mbox_idle(struct lpfc_hba *phba)
3516 * count number of bytes transferred 3523 * count number of bytes transferred
3517 **/ 3524 **/
3518static ssize_t 3525static ssize_t
3519sysfs_mbox_write(struct kobject *kobj, struct bin_attribute *bin_attr, 3526sysfs_mbox_write(struct file *filp, struct kobject *kobj,
3527 struct bin_attribute *bin_attr,
3520 char *buf, loff_t off, size_t count) 3528 char *buf, loff_t off, size_t count)
3521{ 3529{
3522 struct device *dev = container_of(kobj, struct device, kobj); 3530 struct device *dev = container_of(kobj, struct device, kobj);
@@ -3571,6 +3579,7 @@ sysfs_mbox_write(struct kobject *kobj, struct bin_attribute *bin_attr,
3571 3579
3572/** 3580/**
3573 * sysfs_mbox_read - Read method for reading information via mbox 3581 * sysfs_mbox_read - Read method for reading information via mbox
3582 * @filp: open sysfs file
3574 * @kobj: kernel kobject that contains the kernel class device. 3583 * @kobj: kernel kobject that contains the kernel class device.
3575 * @bin_attr: kernel attributes passed to us. 3584 * @bin_attr: kernel attributes passed to us.
3576 * @buf: contains the data to be read from sysfs mbox. 3585 * @buf: contains the data to be read from sysfs mbox.
@@ -3593,7 +3602,8 @@ sysfs_mbox_write(struct kobject *kobj, struct bin_attribute *bin_attr,
3593 * count number of bytes transferred 3602 * count number of bytes transferred
3594 **/ 3603 **/
3595static ssize_t 3604static ssize_t
3596sysfs_mbox_read(struct kobject *kobj, struct bin_attribute *bin_attr, 3605sysfs_mbox_read(struct file *filp, struct kobject *kobj,
3606 struct bin_attribute *bin_attr,
3597 char *buf, loff_t off, size_t count) 3607 char *buf, loff_t off, size_t count)
3598{ 3608{
3599 struct device *dev = container_of(kobj, struct device, kobj); 3609 struct device *dev = container_of(kobj, struct device, kobj);
diff --git a/drivers/scsi/qla2xxx/qla_attr.c b/drivers/scsi/qla2xxx/qla_attr.c
index 3b708606b932..1e4cafabba15 100644
--- a/drivers/scsi/qla2xxx/qla_attr.c
+++ b/drivers/scsi/qla2xxx/qla_attr.c
@@ -16,7 +16,7 @@ static int qla24xx_vport_disable(struct fc_vport *, bool);
16/* SYSFS attributes --------------------------------------------------------- */ 16/* SYSFS attributes --------------------------------------------------------- */
17 17
18static ssize_t 18static ssize_t
19qla2x00_sysfs_read_fw_dump(struct kobject *kobj, 19qla2x00_sysfs_read_fw_dump(struct file *filp, struct kobject *kobj,
20 struct bin_attribute *bin_attr, 20 struct bin_attribute *bin_attr,
21 char *buf, loff_t off, size_t count) 21 char *buf, loff_t off, size_t count)
22{ 22{
@@ -32,7 +32,7 @@ qla2x00_sysfs_read_fw_dump(struct kobject *kobj,
32} 32}
33 33
34static ssize_t 34static ssize_t
35qla2x00_sysfs_write_fw_dump(struct kobject *kobj, 35qla2x00_sysfs_write_fw_dump(struct file *filp, struct kobject *kobj,
36 struct bin_attribute *bin_attr, 36 struct bin_attribute *bin_attr,
37 char *buf, loff_t off, size_t count) 37 char *buf, loff_t off, size_t count)
38{ 38{
@@ -92,7 +92,7 @@ static struct bin_attribute sysfs_fw_dump_attr = {
92}; 92};
93 93
94static ssize_t 94static ssize_t
95qla2x00_sysfs_read_nvram(struct kobject *kobj, 95qla2x00_sysfs_read_nvram(struct file *filp, struct kobject *kobj,
96 struct bin_attribute *bin_attr, 96 struct bin_attribute *bin_attr,
97 char *buf, loff_t off, size_t count) 97 char *buf, loff_t off, size_t count)
98{ 98{
@@ -111,7 +111,7 @@ qla2x00_sysfs_read_nvram(struct kobject *kobj,
111} 111}
112 112
113static ssize_t 113static ssize_t
114qla2x00_sysfs_write_nvram(struct kobject *kobj, 114qla2x00_sysfs_write_nvram(struct file *filp, struct kobject *kobj,
115 struct bin_attribute *bin_attr, 115 struct bin_attribute *bin_attr,
116 char *buf, loff_t off, size_t count) 116 char *buf, loff_t off, size_t count)
117{ 117{
@@ -177,7 +177,7 @@ static struct bin_attribute sysfs_nvram_attr = {
177}; 177};
178 178
179static ssize_t 179static ssize_t
180qla2x00_sysfs_read_optrom(struct kobject *kobj, 180qla2x00_sysfs_read_optrom(struct file *filp, struct kobject *kobj,
181 struct bin_attribute *bin_attr, 181 struct bin_attribute *bin_attr,
182 char *buf, loff_t off, size_t count) 182 char *buf, loff_t off, size_t count)
183{ 183{
@@ -193,7 +193,7 @@ qla2x00_sysfs_read_optrom(struct kobject *kobj,
193} 193}
194 194
195static ssize_t 195static ssize_t
196qla2x00_sysfs_write_optrom(struct kobject *kobj, 196qla2x00_sysfs_write_optrom(struct file *filp, struct kobject *kobj,
197 struct bin_attribute *bin_attr, 197 struct bin_attribute *bin_attr,
198 char *buf, loff_t off, size_t count) 198 char *buf, loff_t off, size_t count)
199{ 199{
@@ -224,7 +224,7 @@ static struct bin_attribute sysfs_optrom_attr = {
224}; 224};
225 225
226static ssize_t 226static ssize_t
227qla2x00_sysfs_write_optrom_ctl(struct kobject *kobj, 227qla2x00_sysfs_write_optrom_ctl(struct file *filp, struct kobject *kobj,
228 struct bin_attribute *bin_attr, 228 struct bin_attribute *bin_attr,
229 char *buf, loff_t off, size_t count) 229 char *buf, loff_t off, size_t count)
230{ 230{
@@ -387,7 +387,7 @@ static struct bin_attribute sysfs_optrom_ctl_attr = {
387}; 387};
388 388
389static ssize_t 389static ssize_t
390qla2x00_sysfs_read_vpd(struct kobject *kobj, 390qla2x00_sysfs_read_vpd(struct file *filp, struct kobject *kobj,
391 struct bin_attribute *bin_attr, 391 struct bin_attribute *bin_attr,
392 char *buf, loff_t off, size_t count) 392 char *buf, loff_t off, size_t count)
393{ 393{
@@ -408,7 +408,7 @@ qla2x00_sysfs_read_vpd(struct kobject *kobj,
408} 408}
409 409
410static ssize_t 410static ssize_t
411qla2x00_sysfs_write_vpd(struct kobject *kobj, 411qla2x00_sysfs_write_vpd(struct file *filp, struct kobject *kobj,
412 struct bin_attribute *bin_attr, 412 struct bin_attribute *bin_attr,
413 char *buf, loff_t off, size_t count) 413 char *buf, loff_t off, size_t count)
414{ 414{
@@ -461,7 +461,7 @@ static struct bin_attribute sysfs_vpd_attr = {
461}; 461};
462 462
463static ssize_t 463static ssize_t
464qla2x00_sysfs_read_sfp(struct kobject *kobj, 464qla2x00_sysfs_read_sfp(struct file *filp, struct kobject *kobj,
465 struct bin_attribute *bin_attr, 465 struct bin_attribute *bin_attr,
466 char *buf, loff_t off, size_t count) 466 char *buf, loff_t off, size_t count)
467{ 467{
@@ -522,7 +522,7 @@ static struct bin_attribute sysfs_sfp_attr = {
522}; 522};
523 523
524static ssize_t 524static ssize_t
525qla2x00_sysfs_write_reset(struct kobject *kobj, 525qla2x00_sysfs_write_reset(struct file *filp, struct kobject *kobj,
526 struct bin_attribute *bin_attr, 526 struct bin_attribute *bin_attr,
527 char *buf, loff_t off, size_t count) 527 char *buf, loff_t off, size_t count)
528{ 528{
@@ -592,7 +592,7 @@ static struct bin_attribute sysfs_reset_attr = {
592}; 592};
593 593
594static ssize_t 594static ssize_t
595qla2x00_sysfs_write_edc(struct kobject *kobj, 595qla2x00_sysfs_write_edc(struct file *filp, struct kobject *kobj,
596 struct bin_attribute *bin_attr, 596 struct bin_attribute *bin_attr,
597 char *buf, loff_t off, size_t count) 597 char *buf, loff_t off, size_t count)
598{ 598{
@@ -650,7 +650,7 @@ static struct bin_attribute sysfs_edc_attr = {
650}; 650};
651 651
652static ssize_t 652static ssize_t
653qla2x00_sysfs_write_edc_status(struct kobject *kobj, 653qla2x00_sysfs_write_edc_status(struct file *filp, struct kobject *kobj,
654 struct bin_attribute *bin_attr, 654 struct bin_attribute *bin_attr,
655 char *buf, loff_t off, size_t count) 655 char *buf, loff_t off, size_t count)
656{ 656{
@@ -700,7 +700,7 @@ qla2x00_sysfs_write_edc_status(struct kobject *kobj,
700} 700}
701 701
702static ssize_t 702static ssize_t
703qla2x00_sysfs_read_edc_status(struct kobject *kobj, 703qla2x00_sysfs_read_edc_status(struct file *filp, struct kobject *kobj,
704 struct bin_attribute *bin_attr, 704 struct bin_attribute *bin_attr,
705 char *buf, loff_t off, size_t count) 705 char *buf, loff_t off, size_t count)
706{ 706{
@@ -730,7 +730,7 @@ static struct bin_attribute sysfs_edc_status_attr = {
730}; 730};
731 731
732static ssize_t 732static ssize_t
733qla2x00_sysfs_read_xgmac_stats(struct kobject *kobj, 733qla2x00_sysfs_read_xgmac_stats(struct file *filp, struct kobject *kobj,
734 struct bin_attribute *bin_attr, 734 struct bin_attribute *bin_attr,
735 char *buf, loff_t off, size_t count) 735 char *buf, loff_t off, size_t count)
736{ 736{
@@ -782,7 +782,7 @@ static struct bin_attribute sysfs_xgmac_stats_attr = {
782}; 782};
783 783
784static ssize_t 784static ssize_t
785qla2x00_sysfs_read_dcbx_tlv(struct kobject *kobj, 785qla2x00_sysfs_read_dcbx_tlv(struct file *filp, struct kobject *kobj,
786 struct bin_attribute *bin_attr, 786 struct bin_attribute *bin_attr,
787 char *buf, loff_t off, size_t count) 787 char *buf, loff_t off, size_t count)
788{ 788{
diff --git a/drivers/staging/udlfb/udlfb.c b/drivers/staging/udlfb/udlfb.c
index aa8195199a2c..577f2bf6eb23 100644
--- a/drivers/staging/udlfb/udlfb.c
+++ b/drivers/staging/udlfb/udlfb.c
@@ -1063,7 +1063,8 @@ static ssize_t metrics_misc_show(struct device *fbdev,
1063 atomic_read(&dev->lost_pixels) ? "yes" : "no"); 1063 atomic_read(&dev->lost_pixels) ? "yes" : "no");
1064} 1064}
1065 1065
1066static ssize_t edid_show(struct kobject *kobj, struct bin_attribute *a, 1066static ssize_t edid_show(struct file *filp, struct kobject *kobj,
1067 struct bin_attribute *a,
1067 char *buf, loff_t off, size_t count) { 1068 char *buf, loff_t off, size_t count) {
1068 struct device *fbdev = container_of(kobj, struct device, kobj); 1069 struct device *fbdev = container_of(kobj, struct device, kobj);
1069 struct fb_info *fb_info = dev_get_drvdata(fbdev); 1070 struct fb_info *fb_info = dev_get_drvdata(fbdev);
diff --git a/drivers/usb/core/sysfs.c b/drivers/usb/core/sysfs.c
index 06863befaf3a..448f5b47fc48 100644
--- a/drivers/usb/core/sysfs.c
+++ b/drivers/usb/core/sysfs.c
@@ -658,7 +658,8 @@ const struct attribute_group *usb_device_groups[] = {
658/* Binary descriptors */ 658/* Binary descriptors */
659 659
660static ssize_t 660static ssize_t
661read_descriptors(struct kobject *kobj, struct bin_attribute *attr, 661read_descriptors(struct file *filp, struct kobject *kobj,
662 struct bin_attribute *attr,
662 char *buf, loff_t off, size_t count) 663 char *buf, loff_t off, size_t count)
663{ 664{
664 struct device *dev = container_of(kobj, struct device, kobj); 665 struct device *dev = container_of(kobj, struct device, kobj);
diff --git a/drivers/video/aty/radeon_base.c b/drivers/video/aty/radeon_base.c
index 6c37e8ee5efe..3c1e13ed1cba 100644
--- a/drivers/video/aty/radeon_base.c
+++ b/drivers/video/aty/radeon_base.c
@@ -2099,7 +2099,7 @@ static ssize_t radeon_show_one_edid(char *buf, loff_t off, size_t count, const u
2099} 2099}
2100 2100
2101 2101
2102static ssize_t radeon_show_edid1(struct kobject *kobj, 2102static ssize_t radeon_show_edid1(struct file *filp, struct kobject *kobj,
2103 struct bin_attribute *bin_attr, 2103 struct bin_attribute *bin_attr,
2104 char *buf, loff_t off, size_t count) 2104 char *buf, loff_t off, size_t count)
2105{ 2105{
@@ -2112,7 +2112,7 @@ static ssize_t radeon_show_edid1(struct kobject *kobj,
2112} 2112}
2113 2113
2114 2114
2115static ssize_t radeon_show_edid2(struct kobject *kobj, 2115static ssize_t radeon_show_edid2(struct file *filp, struct kobject *kobj,
2116 struct bin_attribute *bin_attr, 2116 struct bin_attribute *bin_attr,
2117 char *buf, loff_t off, size_t count) 2117 char *buf, loff_t off, size_t count)
2118{ 2118{
diff --git a/drivers/w1/slaves/w1_ds2431.c b/drivers/w1/slaves/w1_ds2431.c
index 2c6c0cf6a20f..84e2410aec1d 100644
--- a/drivers/w1/slaves/w1_ds2431.c
+++ b/drivers/w1/slaves/w1_ds2431.c
@@ -96,7 +96,7 @@ static int w1_f2d_readblock(struct w1_slave *sl, int off, int count, char *buf)
96 return -1; 96 return -1;
97} 97}
98 98
99static ssize_t w1_f2d_read_bin(struct kobject *kobj, 99static ssize_t w1_f2d_read_bin(struct file *filp, struct kobject *kobj,
100 struct bin_attribute *bin_attr, 100 struct bin_attribute *bin_attr,
101 char *buf, loff_t off, size_t count) 101 char *buf, loff_t off, size_t count)
102{ 102{
@@ -202,7 +202,7 @@ retry:
202 return 0; 202 return 0;
203} 203}
204 204
205static ssize_t w1_f2d_write_bin(struct kobject *kobj, 205static ssize_t w1_f2d_write_bin(struct file *filp, struct kobject *kobj,
206 struct bin_attribute *bin_attr, 206 struct bin_attribute *bin_attr,
207 char *buf, loff_t off, size_t count) 207 char *buf, loff_t off, size_t count)
208{ 208{
diff --git a/drivers/w1/slaves/w1_ds2433.c b/drivers/w1/slaves/w1_ds2433.c
index d2bf32118a98..0f7b8f9c509a 100644
--- a/drivers/w1/slaves/w1_ds2433.c
+++ b/drivers/w1/slaves/w1_ds2433.c
@@ -92,7 +92,7 @@ static int w1_f23_refresh_block(struct w1_slave *sl, struct w1_f23_data *data,
92} 92}
93#endif /* CONFIG_W1_SLAVE_DS2433_CRC */ 93#endif /* CONFIG_W1_SLAVE_DS2433_CRC */
94 94
95static ssize_t w1_f23_read_bin(struct kobject *kobj, 95static ssize_t w1_f23_read_bin(struct file *filp, struct kobject *kobj,
96 struct bin_attribute *bin_attr, 96 struct bin_attribute *bin_attr,
97 char *buf, loff_t off, size_t count) 97 char *buf, loff_t off, size_t count)
98{ 98{
@@ -206,7 +206,7 @@ static int w1_f23_write(struct w1_slave *sl, int addr, int len, const u8 *data)
206 return 0; 206 return 0;
207} 207}
208 208
209static ssize_t w1_f23_write_bin(struct kobject *kobj, 209static ssize_t w1_f23_write_bin(struct file *filp, struct kobject *kobj,
210 struct bin_attribute *bin_attr, 210 struct bin_attribute *bin_attr,
211 char *buf, loff_t off, size_t count) 211 char *buf, loff_t off, size_t count)
212{ 212{
diff --git a/drivers/w1/slaves/w1_ds2760.c b/drivers/w1/slaves/w1_ds2760.c
index 6e153343e117..483d45180911 100644
--- a/drivers/w1/slaves/w1_ds2760.c
+++ b/drivers/w1/slaves/w1_ds2760.c
@@ -97,7 +97,7 @@ int w1_ds2760_recall_eeprom(struct device *dev, int addr)
97 return w1_ds2760_eeprom_cmd(dev, addr, W1_DS2760_RECALL_DATA); 97 return w1_ds2760_eeprom_cmd(dev, addr, W1_DS2760_RECALL_DATA);
98} 98}
99 99
100static ssize_t w1_ds2760_read_bin(struct kobject *kobj, 100static ssize_t w1_ds2760_read_bin(struct file *filp, struct kobject *kobj,
101 struct bin_attribute *bin_attr, 101 struct bin_attribute *bin_attr,
102 char *buf, loff_t off, size_t count) 102 char *buf, loff_t off, size_t count)
103{ 103{
diff --git a/drivers/w1/w1.c b/drivers/w1/w1.c
index ad5897dc4495..2839e281cd65 100644
--- a/drivers/w1/w1.c
+++ b/drivers/w1/w1.c
@@ -120,7 +120,7 @@ static struct device_attribute w1_slave_attr_id =
120 120
121/* Default family */ 121/* Default family */
122 122
123static ssize_t w1_default_write(struct kobject *kobj, 123static ssize_t w1_default_write(struct file *filp, struct kobject *kobj,
124 struct bin_attribute *bin_attr, 124 struct bin_attribute *bin_attr,
125 char *buf, loff_t off, size_t count) 125 char *buf, loff_t off, size_t count)
126{ 126{
@@ -139,7 +139,7 @@ out_up:
139 return count; 139 return count;
140} 140}
141 141
142static ssize_t w1_default_read(struct kobject *kobj, 142static ssize_t w1_default_read(struct file *filp, struct kobject *kobj,
143 struct bin_attribute *bin_attr, 143 struct bin_attribute *bin_attr,
144 char *buf, loff_t off, size_t count) 144 char *buf, loff_t off, size_t count)
145{ 145{
diff --git a/drivers/zorro/zorro-sysfs.c b/drivers/zorro/zorro-sysfs.c
index eb924e0a64ce..26f7184ef9e1 100644
--- a/drivers/zorro/zorro-sysfs.c
+++ b/drivers/zorro/zorro-sysfs.c
@@ -49,7 +49,7 @@ static ssize_t zorro_show_resource(struct device *dev, struct device_attribute *
49 49
50static DEVICE_ATTR(resource, S_IRUGO, zorro_show_resource, NULL); 50static DEVICE_ATTR(resource, S_IRUGO, zorro_show_resource, NULL);
51 51
52static ssize_t zorro_read_config(struct kobject *kobj, 52static ssize_t zorro_read_config(struct file *filp, struct kobject *kobj,
53 struct bin_attribute *bin_attr, 53 struct bin_attribute *bin_attr,
54 char *buf, loff_t off, size_t count) 54 char *buf, loff_t off, size_t count)
55{ 55{
diff --git a/fs/sysfs/bin.c b/fs/sysfs/bin.c
index 806b277453f9..4e321f7353fa 100644
--- a/fs/sysfs/bin.c
+++ b/fs/sysfs/bin.c
@@ -46,9 +46,9 @@ struct bin_buffer {
46}; 46};
47 47
48static int 48static int
49fill_read(struct dentry *dentry, char *buffer, loff_t off, size_t count) 49fill_read(struct file *file, char *buffer, loff_t off, size_t count)
50{ 50{
51 struct sysfs_dirent *attr_sd = dentry->d_fsdata; 51 struct sysfs_dirent *attr_sd = file->f_path.dentry->d_fsdata;
52 struct bin_attribute *attr = attr_sd->s_bin_attr.bin_attr; 52 struct bin_attribute *attr = attr_sd->s_bin_attr.bin_attr;
53 struct kobject *kobj = attr_sd->s_parent->s_dir.kobj; 53 struct kobject *kobj = attr_sd->s_parent->s_dir.kobj;
54 int rc; 54 int rc;
@@ -59,7 +59,7 @@ fill_read(struct dentry *dentry, char *buffer, loff_t off, size_t count)
59 59
60 rc = -EIO; 60 rc = -EIO;
61 if (attr->read) 61 if (attr->read)
62 rc = attr->read(kobj, attr, buffer, off, count); 62 rc = attr->read(file, kobj, attr, buffer, off, count);
63 63
64 sysfs_put_active(attr_sd); 64 sysfs_put_active(attr_sd);
65 65
@@ -70,8 +70,7 @@ static ssize_t
70read(struct file *file, char __user *userbuf, size_t bytes, loff_t *off) 70read(struct file *file, char __user *userbuf, size_t bytes, loff_t *off)
71{ 71{
72 struct bin_buffer *bb = file->private_data; 72 struct bin_buffer *bb = file->private_data;
73 struct dentry *dentry = file->f_path.dentry; 73 int size = file->f_path.dentry->d_inode->i_size;
74 int size = dentry->d_inode->i_size;
75 loff_t offs = *off; 74 loff_t offs = *off;
76 int count = min_t(size_t, bytes, PAGE_SIZE); 75 int count = min_t(size_t, bytes, PAGE_SIZE);
77 char *temp; 76 char *temp;
@@ -92,7 +91,7 @@ read(struct file *file, char __user *userbuf, size_t bytes, loff_t *off)
92 91
93 mutex_lock(&bb->mutex); 92 mutex_lock(&bb->mutex);
94 93
95 count = fill_read(dentry, bb->buffer, offs, count); 94 count = fill_read(file, bb->buffer, offs, count);
96 if (count < 0) { 95 if (count < 0) {
97 mutex_unlock(&bb->mutex); 96 mutex_unlock(&bb->mutex);
98 goto out_free; 97 goto out_free;
@@ -117,9 +116,9 @@ read(struct file *file, char __user *userbuf, size_t bytes, loff_t *off)
117} 116}
118 117
119static int 118static int
120flush_write(struct dentry *dentry, char *buffer, loff_t offset, size_t count) 119flush_write(struct file *file, char *buffer, loff_t offset, size_t count)
121{ 120{
122 struct sysfs_dirent *attr_sd = dentry->d_fsdata; 121 struct sysfs_dirent *attr_sd = file->f_path.dentry->d_fsdata;
123 struct bin_attribute *attr = attr_sd->s_bin_attr.bin_attr; 122 struct bin_attribute *attr = attr_sd->s_bin_attr.bin_attr;
124 struct kobject *kobj = attr_sd->s_parent->s_dir.kobj; 123 struct kobject *kobj = attr_sd->s_parent->s_dir.kobj;
125 int rc; 124 int rc;
@@ -130,7 +129,7 @@ flush_write(struct dentry *dentry, char *buffer, loff_t offset, size_t count)
130 129
131 rc = -EIO; 130 rc = -EIO;
132 if (attr->write) 131 if (attr->write)
133 rc = attr->write(kobj, attr, buffer, offset, count); 132 rc = attr->write(file, kobj, attr, buffer, offset, count);
134 133
135 sysfs_put_active(attr_sd); 134 sysfs_put_active(attr_sd);
136 135
@@ -141,8 +140,7 @@ static ssize_t write(struct file *file, const char __user *userbuf,
141 size_t bytes, loff_t *off) 140 size_t bytes, loff_t *off)
142{ 141{
143 struct bin_buffer *bb = file->private_data; 142 struct bin_buffer *bb = file->private_data;
144 struct dentry *dentry = file->f_path.dentry; 143 int size = file->f_path.dentry->d_inode->i_size;
145 int size = dentry->d_inode->i_size;
146 loff_t offs = *off; 144 loff_t offs = *off;
147 int count = min_t(size_t, bytes, PAGE_SIZE); 145 int count = min_t(size_t, bytes, PAGE_SIZE);
148 char *temp; 146 char *temp;
@@ -165,7 +163,7 @@ static ssize_t write(struct file *file, const char __user *userbuf,
165 163
166 memcpy(bb->buffer, temp, count); 164 memcpy(bb->buffer, temp, count);
167 165
168 count = flush_write(dentry, bb->buffer, offs, count); 166 count = flush_write(file, bb->buffer, offs, count);
169 mutex_unlock(&bb->mutex); 167 mutex_unlock(&bb->mutex);
170 168
171 if (count > 0) 169 if (count > 0)
@@ -363,7 +361,7 @@ static int mmap(struct file *file, struct vm_area_struct *vma)
363 if (!attr->mmap) 361 if (!attr->mmap)
364 goto out_put; 362 goto out_put;
365 363
366 rc = attr->mmap(kobj, attr, vma); 364 rc = attr->mmap(file, kobj, attr, vma);
367 if (rc) 365 if (rc)
368 goto out_put; 366 goto out_put;
369 367
diff --git a/include/linux/sysfs.h b/include/linux/sysfs.h
index 6903e9204032..f2694eb4dd3d 100644
--- a/include/linux/sysfs.h
+++ b/include/linux/sysfs.h
@@ -87,17 +87,18 @@ struct attribute_group {
87 87
88#define attr_name(_attr) (_attr).attr.name 88#define attr_name(_attr) (_attr).attr.name
89 89
90struct file;
90struct vm_area_struct; 91struct vm_area_struct;
91 92
92struct bin_attribute { 93struct bin_attribute {
93 struct attribute attr; 94 struct attribute attr;
94 size_t size; 95 size_t size;
95 void *private; 96 void *private;
96 ssize_t (*read)(struct kobject *, struct bin_attribute *, 97 ssize_t (*read)(struct file *, struct kobject *, struct bin_attribute *,
97 char *, loff_t, size_t); 98 char *, loff_t, size_t);
98 ssize_t (*write)(struct kobject *, struct bin_attribute *, 99 ssize_t (*write)(struct file *,struct kobject *, struct bin_attribute *,
99 char *, loff_t, size_t); 100 char *, loff_t, size_t);
100 int (*mmap)(struct kobject *, struct bin_attribute *attr, 101 int (*mmap)(struct file *, struct kobject *, struct bin_attribute *attr,
101 struct vm_area_struct *vma); 102 struct vm_area_struct *vma);
102}; 103};
103 104
diff --git a/kernel/ksysfs.c b/kernel/ksysfs.c
index 21fe3c426948..0b624e791805 100644
--- a/kernel/ksysfs.c
+++ b/kernel/ksysfs.c
@@ -138,7 +138,8 @@ extern const void __start_notes __attribute__((weak));
138extern const void __stop_notes __attribute__((weak)); 138extern const void __stop_notes __attribute__((weak));
139#define notes_size (&__stop_notes - &__start_notes) 139#define notes_size (&__stop_notes - &__start_notes)
140 140
141static ssize_t notes_read(struct kobject *kobj, struct bin_attribute *bin_attr, 141static ssize_t notes_read(struct file *filp, struct kobject *kobj,
142 struct bin_attribute *bin_attr,
142 char *buf, loff_t off, size_t count) 143 char *buf, loff_t off, size_t count)
143{ 144{
144 memcpy(buf, &__start_notes + off, count); 145 memcpy(buf, &__start_notes + off, count);
diff --git a/kernel/module.c b/kernel/module.c
index e2564580f3f1..5e14483768bb 100644
--- a/kernel/module.c
+++ b/kernel/module.c
@@ -1182,7 +1182,7 @@ struct module_notes_attrs {
1182 struct bin_attribute attrs[0]; 1182 struct bin_attribute attrs[0];
1183}; 1183};
1184 1184
1185static ssize_t module_notes_read(struct kobject *kobj, 1185static ssize_t module_notes_read(struct file *filp, struct kobject *kobj,
1186 struct bin_attribute *bin_attr, 1186 struct bin_attribute *bin_attr,
1187 char *buf, loff_t pos, size_t count) 1187 char *buf, loff_t pos, size_t count)
1188{ 1188{
diff --git a/net/bridge/br_sysfs_br.c b/net/bridge/br_sysfs_br.c
index dd321e39e621..486b8f3861d2 100644
--- a/net/bridge/br_sysfs_br.c
+++ b/net/bridge/br_sysfs_br.c
@@ -659,7 +659,7 @@ static struct attribute_group bridge_group = {
659 * 659 *
660 * Returns the number of bytes read. 660 * Returns the number of bytes read.
661 */ 661 */
662static ssize_t brforward_read(struct kobject *kobj, 662static ssize_t brforward_read(struct file *filp, struct kobject *kobj,
663 struct bin_attribute *bin_attr, 663 struct bin_attribute *bin_attr,
664 char *buf, loff_t off, size_t count) 664 char *buf, loff_t off, size_t count)
665{ 665{