diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2013-05-23 12:27:08 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-05-23 12:27:08 -0400 |
commit | c7153d0643dd161df9e7a2fcb952418055aa5fca (patch) | |
tree | b6db0c75eb77ce920c3aa3c8b63071f661a14e98 | |
parent | 5cc0c03823ca18c490f8223f85ed40f2a9d936c4 (diff) | |
parent | ac5a2962b02f57dea76d314ef2521a2170b28ab6 (diff) |
Merge tag 'driver-core-3.10-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core
Pull driver core fixes from Greg Kroah-Hartman:
"Here are 3 tiny driver core fixes for 3.10-rc2.
A needed symbol export, a change to make it easier to track down
offending sysfs files with incorrect attributes, and a klist bugfix.
All have been in linux-next for a while"
* tag 'driver-core-3.10-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core:
klist: del waiter from klist_remove_waiters before wakeup waitting process
driver core: print sysfs attribute name when warning about bogus permissions
driver core: export subsys_virtual_register
-rw-r--r-- | drivers/base/bus.c | 1 | ||||
-rw-r--r-- | drivers/base/core.c | 6 | ||||
-rw-r--r-- | lib/klist.c | 2 |
3 files changed, 6 insertions, 3 deletions
diff --git a/drivers/base/bus.c b/drivers/base/bus.c index 1a68f947ded8..d414331b480e 100644 --- a/drivers/base/bus.c +++ b/drivers/base/bus.c | |||
@@ -1295,6 +1295,7 @@ int subsys_virtual_register(struct bus_type *subsys, | |||
1295 | 1295 | ||
1296 | return subsys_register(subsys, groups, virtual_dir); | 1296 | return subsys_register(subsys, groups, virtual_dir); |
1297 | } | 1297 | } |
1298 | EXPORT_SYMBOL_GPL(subsys_virtual_register); | ||
1298 | 1299 | ||
1299 | int __init buses_init(void) | 1300 | int __init buses_init(void) |
1300 | { | 1301 | { |
diff --git a/drivers/base/core.c b/drivers/base/core.c index 016312437577..2499cefdcdf2 100644 --- a/drivers/base/core.c +++ b/drivers/base/core.c | |||
@@ -572,9 +572,11 @@ int device_create_file(struct device *dev, | |||
572 | 572 | ||
573 | if (dev) { | 573 | if (dev) { |
574 | WARN(((attr->attr.mode & S_IWUGO) && !attr->store), | 574 | WARN(((attr->attr.mode & S_IWUGO) && !attr->store), |
575 | "Write permission without 'store'\n"); | 575 | "Attribute %s: write permission without 'store'\n", |
576 | attr->attr.name); | ||
576 | WARN(((attr->attr.mode & S_IRUGO) && !attr->show), | 577 | WARN(((attr->attr.mode & S_IRUGO) && !attr->show), |
577 | "Read permission without 'show'\n"); | 578 | "Attribute %s: read permission without 'show'\n", |
579 | attr->attr.name); | ||
578 | error = sysfs_create_file(&dev->kobj, &attr->attr); | 580 | error = sysfs_create_file(&dev->kobj, &attr->attr); |
579 | } | 581 | } |
580 | 582 | ||
diff --git a/lib/klist.c b/lib/klist.c index 0874e41609a6..358a368a2947 100644 --- a/lib/klist.c +++ b/lib/klist.c | |||
@@ -193,10 +193,10 @@ static void klist_release(struct kref *kref) | |||
193 | if (waiter->node != n) | 193 | if (waiter->node != n) |
194 | continue; | 194 | continue; |
195 | 195 | ||
196 | list_del(&waiter->list); | ||
196 | waiter->woken = 1; | 197 | waiter->woken = 1; |
197 | mb(); | 198 | mb(); |
198 | wake_up_process(waiter->process); | 199 | wake_up_process(waiter->process); |
199 | list_del(&waiter->list); | ||
200 | } | 200 | } |
201 | spin_unlock(&klist_remove_lock); | 201 | spin_unlock(&klist_remove_lock); |
202 | knode_set_klist(n, NULL); | 202 | knode_set_klist(n, NULL); |