diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2008-08-28 15:31:49 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-08-28 15:31:49 -0400 |
| commit | 66833d5f3934a19d0988b7d0de58149bfd7a5884 (patch) | |
| tree | a34ce3de726fdd5d7617da51e3a06a3c7c309341 | |
| parent | 0234bf1d98ebd1cb8ea1630957f6d14170cc0ba0 (diff) | |
| parent | 2633f0e57b1127f4060d70bf460140dc9bb19386 (diff) | |
Merge branch 'core-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
* 'core-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
exit signals: use of uninitialized field notify_count
lockdep: fix invalid list_del_rcu in zap_class
lockstat: repair erronous contention statistics
lockstat: fix numerical output rounding error
| -rw-r--r-- | kernel/exit.c | 4 | ||||
| -rw-r--r-- | kernel/lockdep.c | 6 | ||||
| -rw-r--r-- | kernel/lockdep_proc.c | 3 |
3 files changed, 7 insertions, 6 deletions
diff --git a/kernel/exit.c b/kernel/exit.c index 38ec40630149..75c647387639 100644 --- a/kernel/exit.c +++ b/kernel/exit.c | |||
| @@ -918,8 +918,8 @@ static void exit_notify(struct task_struct *tsk, int group_dead) | |||
| 918 | 918 | ||
| 919 | /* mt-exec, de_thread() is waiting for us */ | 919 | /* mt-exec, de_thread() is waiting for us */ |
| 920 | if (thread_group_leader(tsk) && | 920 | if (thread_group_leader(tsk) && |
| 921 | tsk->signal->notify_count < 0 && | 921 | tsk->signal->group_exit_task && |
| 922 | tsk->signal->group_exit_task) | 922 | tsk->signal->notify_count < 0) |
| 923 | wake_up_process(tsk->signal->group_exit_task); | 923 | wake_up_process(tsk->signal->group_exit_task); |
| 924 | 924 | ||
| 925 | write_unlock_irq(&tasklist_lock); | 925 | write_unlock_irq(&tasklist_lock); |
diff --git a/kernel/lockdep.c b/kernel/lockdep.c index 3bfb1877a003..dbda475b13bd 100644 --- a/kernel/lockdep.c +++ b/kernel/lockdep.c | |||
| @@ -875,11 +875,11 @@ static int add_lock_to_list(struct lock_class *class, struct lock_class *this, | |||
| 875 | if (!entry) | 875 | if (!entry) |
| 876 | return 0; | 876 | return 0; |
| 877 | 877 | ||
| 878 | entry->class = this; | ||
| 879 | entry->distance = distance; | ||
| 880 | if (!save_trace(&entry->trace)) | 878 | if (!save_trace(&entry->trace)) |
| 881 | return 0; | 879 | return 0; |
| 882 | 880 | ||
| 881 | entry->class = this; | ||
| 882 | entry->distance = distance; | ||
| 883 | /* | 883 | /* |
| 884 | * Since we never remove from the dependency list, the list can | 884 | * Since we never remove from the dependency list, the list can |
| 885 | * be walked lockless by other CPUs, it's only allocation | 885 | * be walked lockless by other CPUs, it's only allocation |
| @@ -3029,7 +3029,7 @@ found_it: | |||
| 3029 | 3029 | ||
| 3030 | stats = get_lock_stats(hlock_class(hlock)); | 3030 | stats = get_lock_stats(hlock_class(hlock)); |
| 3031 | if (point < ARRAY_SIZE(stats->contention_point)) | 3031 | if (point < ARRAY_SIZE(stats->contention_point)) |
| 3032 | stats->contention_point[i]++; | 3032 | stats->contention_point[point]++; |
| 3033 | if (lock->cpu != smp_processor_id()) | 3033 | if (lock->cpu != smp_processor_id()) |
| 3034 | stats->bounces[bounce_contended + !!hlock->read]++; | 3034 | stats->bounces[bounce_contended + !!hlock->read]++; |
| 3035 | put_lock_stats(stats); | 3035 | put_lock_stats(stats); |
diff --git a/kernel/lockdep_proc.c b/kernel/lockdep_proc.c index 4b194d34d77f..20dbcbf9c7dd 100644 --- a/kernel/lockdep_proc.c +++ b/kernel/lockdep_proc.c | |||
| @@ -472,8 +472,9 @@ static void snprint_time(char *buf, size_t bufsiz, s64 nr) | |||
| 472 | { | 472 | { |
| 473 | unsigned long rem; | 473 | unsigned long rem; |
| 474 | 474 | ||
| 475 | nr += 5; /* for display rounding */ | ||
| 475 | rem = do_div(nr, 1000); /* XXX: do_div_signed */ | 476 | rem = do_div(nr, 1000); /* XXX: do_div_signed */ |
| 476 | snprintf(buf, bufsiz, "%lld.%02d", (long long)nr, ((int)rem+5)/10); | 477 | snprintf(buf, bufsiz, "%lld.%02d", (long long)nr, (int)rem/10); |
| 477 | } | 478 | } |
| 478 | 479 | ||
| 479 | static void seq_time(struct seq_file *m, s64 time) | 480 | static void seq_time(struct seq_file *m, s64 time) |
