diff options
author | Takashi Iwai <tiwai@suse.de> | 2015-06-22 05:32:41 -0400 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2015-06-22 05:32:41 -0400 |
commit | 57fa8a1e22c5833fb2cae96af68fc39ec21cb017 (patch) | |
tree | b0bb4e4a6e04a24119da30253add9fe9ffbc8d22 /kernel/locking/lockdep_proc.c | |
parent | f267f9dff8ba00a8b11f340da3634858ad50ebab (diff) | |
parent | c99d49a8f81fb35e67b0ffa45f320a75e0b5639d (diff) |
Merge tag 'asoc-v4.2-2' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound into for-next
ASoC: Further updates for v4.2
There's a bunch of additional updates and fixes that came in since my
orignal pull request here, including DT support for rt5645 and fairly
large serieses of cleanups and improvements to tas2552 and rcar.
Diffstat (limited to 'kernel/locking/lockdep_proc.c')
-rw-r--r-- | kernel/locking/lockdep_proc.c | 22 |
1 files changed, 17 insertions, 5 deletions
diff --git a/kernel/locking/lockdep_proc.c b/kernel/locking/lockdep_proc.c index ef43ac4bafb5..d83d798bef95 100644 --- a/kernel/locking/lockdep_proc.c +++ b/kernel/locking/lockdep_proc.c | |||
@@ -426,10 +426,12 @@ static void seq_lock_time(struct seq_file *m, struct lock_time *lt) | |||
426 | 426 | ||
427 | static void seq_stats(struct seq_file *m, struct lock_stat_data *data) | 427 | static void seq_stats(struct seq_file *m, struct lock_stat_data *data) |
428 | { | 428 | { |
429 | char name[39]; | 429 | struct lockdep_subclass_key *ckey; |
430 | struct lock_class *class; | ||
431 | struct lock_class_stats *stats; | 430 | struct lock_class_stats *stats; |
431 | struct lock_class *class; | ||
432 | const char *cname; | ||
432 | int i, namelen; | 433 | int i, namelen; |
434 | char name[39]; | ||
433 | 435 | ||
434 | class = data->class; | 436 | class = data->class; |
435 | stats = &data->stats; | 437 | stats = &data->stats; |
@@ -440,15 +442,25 @@ static void seq_stats(struct seq_file *m, struct lock_stat_data *data) | |||
440 | if (class->subclass) | 442 | if (class->subclass) |
441 | namelen -= 2; | 443 | namelen -= 2; |
442 | 444 | ||
443 | if (!class->name) { | 445 | rcu_read_lock_sched(); |
446 | cname = rcu_dereference_sched(class->name); | ||
447 | ckey = rcu_dereference_sched(class->key); | ||
448 | |||
449 | if (!cname && !ckey) { | ||
450 | rcu_read_unlock_sched(); | ||
451 | return; | ||
452 | |||
453 | } else if (!cname) { | ||
444 | char str[KSYM_NAME_LEN]; | 454 | char str[KSYM_NAME_LEN]; |
445 | const char *key_name; | 455 | const char *key_name; |
446 | 456 | ||
447 | key_name = __get_key_name(class->key, str); | 457 | key_name = __get_key_name(ckey, str); |
448 | snprintf(name, namelen, "%s", key_name); | 458 | snprintf(name, namelen, "%s", key_name); |
449 | } else { | 459 | } else { |
450 | snprintf(name, namelen, "%s", class->name); | 460 | snprintf(name, namelen, "%s", cname); |
451 | } | 461 | } |
462 | rcu_read_unlock_sched(); | ||
463 | |||
452 | namelen = strlen(name); | 464 | namelen = strlen(name); |
453 | if (class->name_version > 1) { | 465 | if (class->name_version > 1) { |
454 | snprintf(name+namelen, 3, "#%d", class->name_version); | 466 | snprintf(name+namelen, 3, "#%d", class->name_version); |