diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2010-05-21 13:48:32 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2010-05-21 13:48:32 -0400 |
| commit | d6fb1db02e02aea98f2d7e121fd30e24c84639d6 (patch) | |
| tree | 865546f0388c40d52cf98febe2c6d21039915ea2 /kernel | |
| parent | b4e6b09738fde057ce885703705f71cc953d0512 (diff) | |
| parent | a1b3f594dc5faab91d3a218c7019e9b5edd9fe1a (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: (38 commits)
net: Expose all network devices in a namespaces in sysfs
hotplug: netns aware uevent_helper
kobj: Send hotplug events in the proper namespace.
netlink: Implment netlink_broadcast_filtered
net/sysfs: Fix the bitrot in network device kobject namespace support
netns: Teach network device kobjects which namespace they are in.
kobject: Send hotplug events in all network namespaces
driver-core: fix Typo in drivers/base/core.c for CONFIG_MODULE
pci: check caps from sysfs file open to read device dependent config space
sysfs: add struct file* to bin_attr callbacks
sysfs: Remove usage of S_BIAS to avoid merge conflict with the vfs tree
sysfs: Don't use enums in inline function declaration.
sysfs-namespaces: add a high-level Documentation file
sysfs: Comment sysfs directory tagging logic
driver core: Implement ns directory support for device classes.
sysfs: Implement sysfs_delete_link
sysfs: Add support for tagged directories with untagged members.
sysfs: Implement sysfs tagged directory support.
kobj: Add basic infrastructure for dealing with namespaces.
sysfs: Remove double free sysfs_get_sb
...
Diffstat (limited to 'kernel')
| -rw-r--r-- | kernel/ksysfs.c | 3 | ||||
| -rw-r--r-- | kernel/lockdep.c | 5 | ||||
| -rw-r--r-- | kernel/module.c | 2 | ||||
| -rw-r--r-- | kernel/user_namespace.c | 4 |
4 files changed, 10 insertions, 4 deletions
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)); | |||
| 138 | extern const void __stop_notes __attribute__((weak)); | 138 | extern const void __stop_notes __attribute__((weak)); |
| 139 | #define notes_size (&__stop_notes - &__start_notes) | 139 | #define notes_size (&__stop_notes - &__start_notes) |
| 140 | 140 | ||
| 141 | static ssize_t notes_read(struct kobject *kobj, struct bin_attribute *bin_attr, | 141 | static 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/lockdep.c b/kernel/lockdep.c index ec21304856d1..54286798c37b 100644 --- a/kernel/lockdep.c +++ b/kernel/lockdep.c | |||
| @@ -2711,6 +2711,8 @@ void lockdep_init_map(struct lockdep_map *lock, const char *name, | |||
| 2711 | } | 2711 | } |
| 2712 | EXPORT_SYMBOL_GPL(lockdep_init_map); | 2712 | EXPORT_SYMBOL_GPL(lockdep_init_map); |
| 2713 | 2713 | ||
| 2714 | struct lock_class_key __lockdep_no_validate__; | ||
| 2715 | |||
| 2714 | /* | 2716 | /* |
| 2715 | * This gets called for every mutex_lock*()/spin_lock*() operation. | 2717 | * This gets called for every mutex_lock*()/spin_lock*() operation. |
| 2716 | * We maintain the dependency maps and validate the locking attempt: | 2718 | * We maintain the dependency maps and validate the locking attempt: |
| @@ -2745,6 +2747,9 @@ static int __lock_acquire(struct lockdep_map *lock, unsigned int subclass, | |||
| 2745 | return 0; | 2747 | return 0; |
| 2746 | } | 2748 | } |
| 2747 | 2749 | ||
| 2750 | if (lock->key == &__lockdep_no_validate__) | ||
| 2751 | check = 1; | ||
| 2752 | |||
| 2748 | if (!subclass) | 2753 | if (!subclass) |
| 2749 | class = lock->class_cache; | 2754 | class = lock->class_cache; |
| 2750 | /* | 2755 | /* |
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 | ||
| 1185 | static ssize_t module_notes_read(struct kobject *kobj, | 1185 | static 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/kernel/user_namespace.c b/kernel/user_namespace.c index 076c7c8215b0..b2d70d38dff4 100644 --- a/kernel/user_namespace.c +++ b/kernel/user_namespace.c | |||
| @@ -54,8 +54,8 @@ int create_user_ns(struct cred *new) | |||
| 54 | #endif | 54 | #endif |
| 55 | /* tgcred will be cleared in our caller bc CLONE_THREAD won't be set */ | 55 | /* tgcred will be cleared in our caller bc CLONE_THREAD won't be set */ |
| 56 | 56 | ||
| 57 | /* alloc_uid() incremented the userns refcount. Just set it to 1 */ | 57 | /* root_user holds a reference to ns, our reference can be dropped */ |
| 58 | kref_set(&ns->kref, 1); | 58 | put_user_ns(ns); |
| 59 | 59 | ||
| 60 | return 0; | 60 | return 0; |
| 61 | } | 61 | } |
