Commit 66833d5f authored by Linus Torvalds's avatar Linus Torvalds

Merge branch 'core-fixes-for-linus' of...

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
parents 0234bf1d 2633f0e5
...@@ -918,8 +918,8 @@ static void exit_notify(struct task_struct *tsk, int group_dead) ...@@ -918,8 +918,8 @@ static void exit_notify(struct task_struct *tsk, int group_dead)
/* mt-exec, de_thread() is waiting for us */ /* mt-exec, de_thread() is waiting for us */
if (thread_group_leader(tsk) && if (thread_group_leader(tsk) &&
tsk->signal->notify_count < 0 && tsk->signal->group_exit_task &&
tsk->signal->group_exit_task) tsk->signal->notify_count < 0)
wake_up_process(tsk->signal->group_exit_task); wake_up_process(tsk->signal->group_exit_task);
write_unlock_irq(&tasklist_lock); write_unlock_irq(&tasklist_lock);
......
...@@ -875,11 +875,11 @@ static int add_lock_to_list(struct lock_class *class, struct lock_class *this, ...@@ -875,11 +875,11 @@ static int add_lock_to_list(struct lock_class *class, struct lock_class *this,
if (!entry) if (!entry)
return 0; return 0;
entry->class = this;
entry->distance = distance;
if (!save_trace(&entry->trace)) if (!save_trace(&entry->trace))
return 0; return 0;
entry->class = this;
entry->distance = distance;
/* /*
* Since we never remove from the dependency list, the list can * Since we never remove from the dependency list, the list can
* be walked lockless by other CPUs, it's only allocation * be walked lockless by other CPUs, it's only allocation
...@@ -3029,7 +3029,7 @@ __lock_contended(struct lockdep_map *lock, unsigned long ip) ...@@ -3029,7 +3029,7 @@ __lock_contended(struct lockdep_map *lock, unsigned long ip)
stats = get_lock_stats(hlock_class(hlock)); stats = get_lock_stats(hlock_class(hlock));
if (point < ARRAY_SIZE(stats->contention_point)) if (point < ARRAY_SIZE(stats->contention_point))
stats->contention_point[i]++; stats->contention_point[point]++;
if (lock->cpu != smp_processor_id()) if (lock->cpu != smp_processor_id())
stats->bounces[bounce_contended + !!hlock->read]++; stats->bounces[bounce_contended + !!hlock->read]++;
put_lock_stats(stats); put_lock_stats(stats);
......
...@@ -472,8 +472,9 @@ static void snprint_time(char *buf, size_t bufsiz, s64 nr) ...@@ -472,8 +472,9 @@ static void snprint_time(char *buf, size_t bufsiz, s64 nr)
{ {
unsigned long rem; unsigned long rem;
nr += 5; /* for display rounding */
rem = do_div(nr, 1000); /* XXX: do_div_signed */ rem = do_div(nr, 1000); /* XXX: do_div_signed */
snprintf(buf, bufsiz, "%lld.%02d", (long long)nr, ((int)rem+5)/10); snprintf(buf, bufsiz, "%lld.%02d", (long long)nr, (int)rem/10);
} }
static void seq_time(struct seq_file *m, s64 time) static void seq_time(struct seq_file *m, s64 time)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment