diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2008-10-16 15:40:26 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-10-16 15:40:26 -0400 |
| commit | c813b4e16ead3c3df98ac84419d4df2adf33fe01 (patch) | |
| tree | 2ca4a5b6966d833b6149e3dda7a4e85d1255779c /drivers | |
| parent | c8d8a2321f9c4ee18fbcc399fdc2a77e580a03b9 (diff) | |
| parent | 02683ffdf655b4ae15245376ba6fea6d9e5829a6 (diff) | |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core-2.6: (46 commits)
UIO: Fix mapping of logical and virtual memory
UIO: add automata sercos3 pci card support
UIO: Change driver name of uio_pdrv
UIO: Add alignment warnings for uio-mem
Driver core: add bus_sort_breadthfirst() function
NET: convert the phy_device file to use bus_find_device_by_name
kobject: Cleanup kobject_rename and !CONFIG_SYSFS
kobject: Fix kobject_rename and !CONFIG_SYSFS
sysfs: Make dir and name args to sysfs_notify() const
platform: add new device registration helper
sysfs: use ilookup5() instead of ilookup5_nowait()
PNP: create device attributes via default device attributes
Driver core: make bus_find_device_by_name() more robust
usb: turn dev_warn+WARN_ON combos into dev_WARN
debug: use dev_WARN() rather than WARN_ON() in device_pm_add()
debug: Introduce a dev_WARN() function
sysfs: fix deadlock
device model: Do a quickcheck for driver binding before doing an expensive check
Driver core: Fix cleanup in device_create_vargs().
Driver core: Clarify device cleanup.
...
Diffstat (limited to 'drivers')
96 files changed, 896 insertions, 518 deletions
diff --git a/drivers/base/bus.c b/drivers/base/bus.c index ef522ae55480..5aee1c0169ea 100644 --- a/drivers/base/bus.c +++ b/drivers/base/bus.c | |||
| @@ -333,9 +333,7 @@ static int match_name(struct device *dev, void *data) | |||
| 333 | { | 333 | { |
| 334 | const char *name = data; | 334 | const char *name = data; |
| 335 | 335 | ||
| 336 | if (strcmp(name, dev->bus_id) == 0) | 336 | return sysfs_streq(name, dev->bus_id); |
| 337 | return 1; | ||
| 338 | return 0; | ||
| 339 | } | 337 | } |
| 340 | 338 | ||
| 341 | /** | 339 | /** |
| @@ -982,6 +980,56 @@ struct klist *bus_get_device_klist(struct bus_type *bus) | |||
| 982 | } | 980 | } |
| 983 | EXPORT_SYMBOL_GPL(bus_get_device_klist); | 981 | EXPORT_SYMBOL_GPL(bus_get_device_klist); |
| 984 | 982 | ||
| 983 | /* | ||
| 984 | * Yes, this forcably breaks the klist abstraction temporarily. It | ||
| 985 | * just wants to sort the klist, not change reference counts and | ||
| 986 | * take/drop locks rapidly in the process. It does all this while | ||
| 987 | * holding the lock for the list, so objects can't otherwise be | ||
| 988 | * added/removed while we're swizzling. | ||
| 989 | */ | ||
| 990 | static void device_insertion_sort_klist(struct device *a, struct list_head *list, | ||
| 991 | int (*compare)(const struct device *a, | ||
| 992 | const struct device *b)) | ||
| 993 | { | ||
| 994 | struct list_head *pos; | ||
| 995 | struct klist_node *n; | ||
| 996 | struct device *b; | ||
| 997 | |||
| 998 | list_for_each(pos, list) { | ||
| 999 | n = container_of(pos, struct klist_node, n_node); | ||
| 1000 | b = container_of(n, struct device, knode_bus); | ||
| 1001 | if (compare(a, b) <= 0) { | ||
| 1002 | list_move_tail(&a->knode_bus.n_node, | ||
| 1003 | |||
