aboutsummaryrefslogtreecommitdiffstats
path: root/fs/sysfs/bin.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2013-09-03 14:37:15 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2013-09-03 14:37:15 -0400
commit542a086ac72fb193cbc1b996963a572269e57743 (patch)
treeb137c08037cca4ffc8a156a891a01113b3b8edce /fs/sysfs/bin.c
parent1d1fdd95df681f0c065d90ffaafa215a0e8825e2 (diff)
parent1eeeef153c02f5856ec109fa532eb5f31c39f85c (diff)
Merge tag 'driver-core-3.12-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core
Pull driver core patches from Greg KH: "Here's the big driver core pull request for 3.12-rc1. Lots of tiny changes here fixing up the way sysfs attributes are created, to try to make drivers simpler, and fix a whole class race conditions with creations of device attributes after the device was announced to userspace. All the various pieces are acked by the different subsystem maintainers" * tag 'driver-core-3.12-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core: (119 commits) firmware loader: fix pending_fw_head list corruption drivers/base/memory.c: introduce help macro to_memory_block dynamic debug: line queries failing due to uninitialized local variable sysfs: sysfs_create_groups returns a value. debugfs: provide debugfs_create_x64() when disabled rbd: convert bus code to use bus_groups firmware: dcdbas: use binary attribute groups sysfs: add sysfs_create/remove_groups for when SYSFS is not enabled driver core: add #include <linux/sysfs.h> to core files. HID: convert bus code to use dev_groups Input: serio: convert bus code to use drv_groups Input: gameport: convert bus code to use drv_groups driver core: firmware: use __ATTR_RW() driver core: core: use DEVICE_ATTR_RO driver core: bus: use DRIVER_ATTR_WO() driver core: create write-only attribute macros for devices and drivers sysfs: create __ATTR_WO() driver-core: platform: convert bus code to use dev_groups workqueue: convert bus code to use dev_groups MEI: convert bus code to use dev_groups ...
Diffstat (limited to 'fs/sysfs/bin.c')
-rw-r--r--fs/sysfs/bin.c13
1 files changed, 4 insertions, 9 deletions
diff --git a/fs/sysfs/bin.c b/fs/sysfs/bin.c
index 15c68f9489ae..c590cabd57bb 100644
--- a/fs/sysfs/bin.c
+++ b/fs/sysfs/bin.c
@@ -22,8 +22,7 @@
22#include <linux/slab.h> 22#include <linux/slab.h>
23#include <linux/mutex.h> 23#include <linux/mutex.h>
24#include <linux/mm.h> 24#include <linux/mm.h>
25 25#include <linux/uaccess.h>
26#include <asm/uaccess.h>
27 26
28#include "sysfs.h" 27#include "sysfs.h"
29 28
@@ -391,7 +390,7 @@ out_unlock:
391 return rc; 390 return rc;
392} 391}
393 392
394static int open(struct inode * inode, struct file * file) 393static int open(struct inode *inode, struct file *file)
395{ 394{
396 struct sysfs_dirent *attr_sd = file->f_path.dentry->d_fsdata; 395 struct sysfs_dirent *attr_sd = file->f_path.dentry->d_fsdata;
397 struct bin_attribute *attr = attr_sd->s_bin_attr.bin_attr; 396 struct bin_attribute *attr = attr_sd->s_bin_attr.bin_attr;
@@ -435,7 +434,7 @@ static int open(struct inode * inode, struct file * file)
435 return error; 434 return error;
436} 435}
437 436
438static int release(struct inode * inode, struct file * file) 437static int release(struct inode *inode, struct file *file)
439{ 438{
440 struct bin_buffer *bb = file->private_data; 439 struct bin_buffer *bb = file->private_data;
441 440
@@ -481,7 +480,6 @@ void unmap_bin_file(struct sysfs_dirent *attr_sd)
481 * @kobj: object. 480 * @kobj: object.
482 * @attr: attribute descriptor. 481 * @attr: attribute descriptor.
483 */ 482 */
484
485int sysfs_create_bin_file(struct kobject *kobj, 483int sysfs_create_bin_file(struct kobject *kobj,
486 const struct bin_attribute *attr) 484 const struct bin_attribute *attr)
487{ 485{
@@ -489,19 +487,16 @@ int sysfs_create_bin_file(struct kobject *kobj,
489 487
490 return sysfs_add_file(kobj->sd, &attr->attr, SYSFS_KOBJ_BIN_ATTR); 488 return sysfs_add_file(kobj->sd, &attr->attr, SYSFS_KOBJ_BIN_ATTR);
491} 489}
492 490EXPORT_SYMBOL_GPL(sysfs_create_bin_file);
493 491
494/** 492/**
495 * sysfs_remove_bin_file - remove binary file for object. 493 * sysfs_remove_bin_file - remove binary file for object.
496 * @kobj: object. 494 * @kobj: object.
497 * @attr: attribute descriptor. 495 * @attr: attribute descriptor.
498 */ 496 */
499
500void sysfs_remove_bin_file(struct kobject *kobj, 497void sysfs_remove_bin_file(struct kobject *kobj,
501 const struct bin_attribute *attr) 498 const struct bin_attribute *attr)
502{ 499{
503 sysfs_hash_and_remove(kobj->sd, NULL, attr->attr.name); 500 sysfs_hash_and_remove(kobj->sd, NULL, attr->attr.name);
504} 501}
505
506EXPORT_SYMBOL_GPL(sysfs_create_bin_file);
507EXPORT_SYMBOL_GPL(sysfs_remove_bin_file); 502EXPORT_SYMBOL_GPL(sysfs_remove_bin_file);