diff options
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 | } |
