diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/kobject.c | 9 | ||||
-rw-r--r-- | lib/kobject_uevent.c | 2 | ||||
-rw-r--r-- | lib/spinlock_debug.c | 6 |
3 files changed, 13 insertions, 4 deletions
diff --git a/lib/kobject.c b/lib/kobject.c index 7a0e6809490d..efe67fa96a71 100644 --- a/lib/kobject.c +++ b/lib/kobject.c | |||
@@ -72,6 +72,8 @@ static int get_kobj_path_length(struct kobject *kobj) | |||
72 | * Add 1 to strlen for leading '/' of each level. | 72 | * Add 1 to strlen for leading '/' of each level. |
73 | */ | 73 | */ |
74 | do { | 74 | do { |
75 | if (kobject_name(parent) == NULL) | ||
76 | return 0; | ||
75 | length += strlen(kobject_name(parent)) + 1; | 77 | length += strlen(kobject_name(parent)) + 1; |
76 | parent = parent->parent; | 78 | parent = parent->parent; |
77 | } while (parent); | 79 | } while (parent); |
@@ -107,6 +109,8 @@ char *kobject_get_path(struct kobject *kobj, gfp_t gfp_mask) | |||
107 | int len; | 109 | int len; |
108 | 110 | ||
109 | len = get_kobj_path_length(kobj); | 111 | len = get_kobj_path_length(kobj); |
112 | if (len == 0) | ||
113 | return NULL; | ||
110 | path = kmalloc(len, gfp_mask); | 114 | path = kmalloc(len, gfp_mask); |
111 | if (!path) | 115 | if (!path) |
112 | return NULL; | 116 | return NULL; |
@@ -162,6 +166,11 @@ int kobject_add(struct kobject * kobj) | |||
162 | return -ENOENT; | 166 | return -ENOENT; |
163 | if (!kobj->k_name) | 167 | if (!kobj->k_name) |
164 | kobj->k_name = kobj->name; | 168 | kobj->k_name = kobj->name; |
169 | if (!kobj->k_name) { | ||
170 | pr_debug("kobject attempted to be registered with no name!\n"); | ||
171 | WARN_ON(1); | ||
172 | return -EINVAL; | ||
173 | } | ||
165 | parent = kobject_get(kobj->parent); | 174 | parent = kobject_get(kobj->parent); |
166 | 175 | ||
167 | pr_debug("kobject %s: registering. parent: %s, set: %s\n", | 176 | pr_debug("kobject %s: registering. parent: %s, set: %s\n", |
diff --git a/lib/kobject_uevent.c b/lib/kobject_uevent.c index f56e27ae9d52..1b1985c136ec 100644 --- a/lib/kobject_uevent.c +++ b/lib/kobject_uevent.c | |||
@@ -22,7 +22,7 @@ | |||
22 | #include <linux/kobject.h> | 22 | #include <linux/kobject.h> |
23 | #include <net/sock.h> | 23 | #include <net/sock.h> |
24 | 24 | ||
25 | #define BUFFER_SIZE 1024 /* buffer for the variables */ | 25 | #define BUFFER_SIZE 2048 /* buffer for the variables */ |
26 | #define NUM_ENVP 32 /* number of env pointers */ | 26 | #define NUM_ENVP 32 /* number of env pointers */ |
27 | 27 | ||
28 | #if defined(CONFIG_HOTPLUG) && defined(CONFIG_NET) | 28 | #if defined(CONFIG_HOTPLUG) && defined(CONFIG_NET) |
diff --git a/lib/spinlock_debug.c b/lib/spinlock_debug.c index c8bb8cc899d7..d8b6bb419d49 100644 --- a/lib/spinlock_debug.c +++ b/lib/spinlock_debug.c | |||
@@ -72,9 +72,9 @@ static void __spin_lock_debug(spinlock_t *lock) | |||
72 | 72 | ||
73 | for (;;) { | 73 | for (;;) { |
74 | for (i = 0; i < loops_per_jiffy * HZ; i++) { | 74 | for (i = 0; i < loops_per_jiffy * HZ; i++) { |
75 | cpu_relax(); | ||
76 | if (__raw_spin_trylock(&lock->raw_lock)) | 75 | if (__raw_spin_trylock(&lock->raw_lock)) |
77 | return; | 76 | return; |
77 | __delay(1); | ||
78 | } | 78 | } |
79 | /* lockup suspected: */ | 79 | /* lockup suspected: */ |
80 | if (print_once) { | 80 | if (print_once) { |
@@ -144,9 +144,9 @@ static void __read_lock_debug(rwlock_t *lock) | |||
144 | 144 | ||
145 | for (;;) { | 145 | for (;;) { |
146 | for (i = 0; i < loops_per_jiffy * HZ; i++) { | 146 | for (i = 0; i < loops_per_jiffy * HZ; i++) { |
147 | cpu_relax(); | ||
148 | if (__raw_read_trylock(&lock->raw_lock)) | 147 | if (__raw_read_trylock(&lock->raw_lock)) |
149 | return; | 148 | return; |
149 | __delay(1); | ||
150 | } | 150 | } |
151 | /* lockup suspected: */ | 151 | /* lockup suspected: */ |
152 | if (print_once) { | 152 | if (print_once) { |
@@ -217,9 +217,9 @@ static void __write_lock_debug(rwlock_t *lock) | |||
217 | 217 | ||
218 | for (;;) { | 218 | for (;;) { |
219 | for (i = 0; i < loops_per_jiffy * HZ; i++) { | 219 | for (i = 0; i < loops_per_jiffy * HZ; i++) { |
220 | cpu_relax(); | ||
221 | if (__raw_write_trylock(&lock->raw_lock)) | 220 | if (__raw_write_trylock(&lock->raw_lock)) |
222 | return; | 221 | return; |
222 | __delay(1); | ||
223 | } | 223 | } |
224 | /* lockup suspected: */ | 224 | /* lockup suspected: */ |
225 | if (print_once) { | 225 | if (print_once) { |