diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2013-09-03 14:37:15 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-09-03 14:37:15 -0400 |
commit | 542a086ac72fb193cbc1b996963a572269e57743 (patch) | |
tree | b137c08037cca4ffc8a156a891a01113b3b8edce /fs/sysfs/bin.c | |
parent | 1d1fdd95df681f0c065d90ffaafa215a0e8825e2 (diff) | |
parent | 1eeeef153c02f5856ec109fa532eb5f31c39f85c (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.c | 13 |
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 | ||
394 | static int open(struct inode * inode, struct file * file) | 393 | static 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 | ||
438 | static int release(struct inode * inode, struct file * file) | 437 | static 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 | |||
485 | int sysfs_create_bin_file(struct kobject *kobj, | 483 | int 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 | 490 | EXPORT_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 | |||
500 | void sysfs_remove_bin_file(struct kobject *kobj, | 497 | void 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 | |||
506 | EXPORT_SYMBOL_GPL(sysfs_create_bin_file); | ||
507 | EXPORT_SYMBOL_GPL(sysfs_remove_bin_file); | 502 | EXPORT_SYMBOL_GPL(sysfs_remove_bin_file); |