1 /* 2 * kernel/lockdep.c 3 * 4 * Runtime locking correctness validator 5 * 6 * Started by Ingo Molnar: 7 * 8 * Copyright (C) 2006,2007 Red Hat, Inc., Ingo Molnar <mingo@redhat.com> 9 * Copyright (C) 2007 Red Hat, Inc., Peter Zijlstra 10 * 11 * this code maps all the lock dependencies as they occur in a live kernel 12 * and will warn about the following classes of locking bugs: 13 * 14 * - lock inversion scenarios 15 * - circular lock dependencies 16 * - hardirq/softirq safe/unsafe locking bugs 17 * 18 * Bugs are reported even if the current locking scenario does not cause 19 * any deadlock at this point. 20 * 21 * I.e. if anytime in the past two locks were taken in a different order, 22 * even if it happened for another task, even if those were different 23 * locks (but of the same class as this lock), this code will detect it. 24 * 25 * Thanks to Arjan van de Ven for coming up with the initial idea of 26 * mapping lock dependencies runtime. 27 */ 28 #define DISABLE_BRANCH_PROFILING 29 #include <linux/mutex.h> 30 #include <linux/sched.h> 31 #include <linux/sched/clock.h> 32 #include <linux/sched/task.h> 33 #include <linux/sched/mm.h> 34 #include <linux/delay.h> 35 #include <linux/module.h> 36 #include <linux/proc_fs.h> 37 #include <linux/seq_file.h> 38 #include <linux/spinlock.h> 39 #include <linux/kallsyms.h> 40 #include <linux/interrupt.h> 41 #include <linux/stacktrace.h> 42 #include <linux/debug_locks.h> 43 #include <linux/irqflags.h> 44 #include <linux/utsname.h> 45 #include <linux/hash.h> 46 #include <linux/ftrace.h> 47 #include <linux/stringify.h> 48 #include <linux/bitops.h> 49 #include <linux/gfp.h> 50 #include <linux/random.h> 51 #include <linux/jhash.h> 52 #include <linux/nmi.h> 53 54 #include <asm/sections.h> 55 56 #include "lockdep_internals.h" 57 58 #define CREATE_TRACE_POINTS 59 #include <trace/events/lock.h> 60 61 #ifdef CONFIG_PROVE_LOCKING 62 int prove_locking = 1; 63 module_param(prove_locking, int, 0644); 64 #else 65 #define prove_locking 0 66 #endif 67 68 #ifdef CONFIG_LOCK_STAT 69 int lock_stat = 1; 70 module_param(lock_stat, int, 0644); 71 #else 72 #define lock_stat 0 73 #endif 74 75 /* 76 * lockdep_lock: protects the lockdep graph, the hashes and the 77 * class/list/hash allocators. 78 * 79 * This is one of the rare exceptions where it's justified 80 * to use a raw spinlock - we really dont want the spinlock 81 * code to recurse back into the lockdep code... 82 */ 83 static arch_spinlock_t lockdep_lock = (arch_spinlock_t)__ARCH_SPIN_LOCK_UNLOCKED; 84 85 static int graph_lock(void) 86 { 87 arch_spin_lock(&lockdep_lock); 88 /* 89 * Make sure that if another CPU detected a bug while 90 * walking the graph we dont change it (while the other 91 * CPU is busy printing out stuff with the graph lock 92 * dropped already) 93 */ 94 if (!debug_locks) { 95 arch_spin_unlock(&lockdep_lock); 96 return 0; 97 } 98 /* prevent any recursions within lockdep from causing deadlocks */ 99 current->lockdep_recursion++; 100 return 1; 101 } 102 103 static inline int graph_unlock(void) 104 { 105 if (debug_locks && !arch_spin_is_locked(&lockdep_lock)) { 106 /* 107 * The lockdep graph lock isn't locked while we expect it to 108 * be, we're confused now, bye! 109 */ 110 return DEBUG_LOCKS_WARN_ON(1); 111 } 112 113 current->lockdep_recursion--; 114 arch_spin_unlock(&lockdep_lock); 115 return 0; 116 } 117 118 /* 119 * Turn lock debugging off and return with 0 if it was off already, 120 * and also release the graph lock: 121 */ 122 static inline int debug_locks_off_graph_unlock(void) 123 { 124 int ret = debug_locks_off(); 125 126 arch_spin_unlock(&lockdep_lock); 127 128 return ret; 129 } 130 131 unsigned long nr_list_entries; 132 static struct lock_list list_entries[MAX_LOCKDEP_ENTRIES]; 133 134 /* 135 * All data structures here are protected by the global debug_lock. 136 * 137 * Mutex key structs only get allocated, once during bootup, and never 138 * get freed - this significantly simplifies the debugging code. 139 */ 140 unsigned long nr_lock_classes; 141 #ifndef CONFIG_DEBUG_LOCKDEP 142 static 143 #endif 144 struct lock_class lock_classes[MAX_LOCKDEP_KEYS]; 145 146 static inline struct lock_class *hlock_class(struct held_lock *hlock) 147 { 148 if (!hlock->class_idx) { 149 /* 150 * Someone passed in garbage, we give up. 151 */ 152 DEBUG_LOCKS_WARN_ON(1); 153 return NULL; 154 } 155 return lock_classes + hlock->class_idx - 1; 156 } 157 158 #ifdef CONFIG_LOCK_STAT 159 static DEFINE_PER_CPU(struct lock_class_stats[MAX_LOCKDEP_KEYS], cpu_lock_stats); 160 161 static inline u64 lockstat_clock(void) 162 { 163 return local_clock(); 164 } 165 166 static int lock_point(unsigned long points[], unsigned long ip) 167 { 168 int i; 169 170 for (i = 0; i < LOCKSTAT_POINTS; i++) { 171 if (points[i] == 0) { 172 points[i] = ip; 173 break; 174 } 175 if (points[i] == ip) 176 break; 177 } 178 179 return i; 180 } 181 182 static void lock_time_inc(struct lock_time *lt, u64 time) 183 { 184 if (time > lt->max) 185 lt->max = time; 186 187 if (time < lt->min || !lt->nr) 188 lt->min = time; 189 190 lt->total += time; 191 lt->nr++; 192 } 193 194 static inline void lock_time_add(struct lock_time *src, struct lock_time *dst) 195 { 196 if (!src->nr) 197 return; 198 199 if (src->max > dst->max) 200 dst->max = src->max; 201 202 if (src->min < dst->min || !dst->nr) 203 dst->min = src->min; 204 205 dst->total += src->total; 206 dst->nr += src->nr; 207 } 208 209 struct lock_class_stats lock_stats(struct lock_class *class) 210 { 211 struct lock_class_stats stats; 212 int cpu, i; 213 214 memset(&stats, 0, sizeof(struct lock_class_stats)); 215 for_each_possible_cpu(cpu) { 216 struct lock_class_stats *pcs = 217 &per_cpu(cpu_lock_stats, cpu)[class - lock_classes]; 218 219 for (i = 0; i < ARRAY_SIZE(stats.contention_point); i++) 220 stats.contention_point[i] += pcs->contention_point[i]; 221 222 for (i = 0; i < ARRAY_SIZE(stats.contending_point); i++) 223 stats.contending_point[i] += pcs->contending_point[i]; 224 225 lock_time_add(&pcs->read_waittime, &stats.read_waittime); 226 lock_time_add(&pcs->write_waittime, &stats.write_waittime); 227 228 lock_time_add(&pcs->read_holdtime, &stats.read_holdtime); 229 lock_time_add(&pcs->write_holdtime, &stats.write_holdtime); 230 231 for (i = 0; i < ARRAY_SIZE(stats.bounces); i++) 232 stats.bounces[i] += pcs->bounces[i]; 233 } 234 235 return stats; 236 } 237 238 void clear_lock_stats(struct lock_class *class) 239 { 240 int cpu; 241 242 for_each_possible_cpu(cpu) { 243 struct lock_class_stats *cpu_stats = 244 &per_cpu(cpu_lock_stats, cpu)[class - lock_classes]; 245 246 memset(cpu_stats, 0, sizeof(struct lock_class_stats)); 247 } 248 memset(class->contention_point, 0, sizeof(class->contention_point)); 249 memset(class->contending_point, 0, sizeof(class->contending_point)); 250 } 251 252 static struct lock_class_stats *get_lock_stats(struct lock_class *class) 253 { 254 return &this_cpu_ptr(cpu_lock_stats)[class - lock_classes]; 255 } 256 257 static void lock_release_holdtime(struct held_lock *hlock) 258 { 259 struct lock_class_stats *stats; 260 u64 holdtime; 261 262 if (!lock_stat) 263 return; 264 265 holdtime = lockstat_clock() - hlock->holdtime_stamp; 266 267 stats = get_lock_stats(hlock_class(hlock)); 268 if (hlock->read) 269 lock_time_inc(&stats->read_holdtime, holdtime); 270 else 271 lock_time_inc(&stats->write_holdtime, holdtime); 272 } 273 #else 274 static inline void lock_release_holdtime(struct held_lock *hlock) 275 { 276 } 277 #endif 278 279 /* 280 * We keep a global list of all lock classes. The list only grows, 281 * never shrinks. The list is only accessed with the lockdep 282 * spinlock lock held. 283 */ 284 LIST_HEAD(all_lock_classes); 285 286 /* 287 * The lockdep classes are in a hash-table as well, for fast lookup: 288 */ 289 #define CLASSHASH_BITS (MAX_LOCKDEP_KEYS_BITS - 1) 290 #define CLASSHASH_SIZE (1UL << CLASSHASH_BITS) 291 #define __classhashfn(key) hash_long((unsigned long)key, CLASSHASH_BITS) 292 #define classhashentry(key) (classhash_table + __classhashfn((key))) 293 294 static struct hlist_head classhash_table[CLASSHASH_SIZE]; 295 296 /* 297 * We put the lock dependency chains into a hash-table as well, to cache 298 * their existence: 299 */ 300 #define CHAINHASH_BITS (MAX_LOCKDEP_CHAINS_BITS-1) 301 #define CHAINHASH_SIZE (1UL << CHAINHASH_BITS) 302 #define __chainhashfn(chain) hash_long(chain, CHAINHASH_BITS) 303 #define chainhashentry(chain) (chainhash_table + __chainhashfn((chain))) 304 305 static struct hlist_head chainhash_table[CHAINHASH_SIZE]; 306 307 /* 308 * The hash key of the lock dependency chains is a hash itself too: 309 * it's a hash of all locks taken up to that lock, including that lock. 310 * It's a 64-bit hash, because it's important for the keys to be 311 * unique. 312 */ 313 static inline u64 iterate_chain_key(u64 key, u32 idx) 314 { 315 u32 k0 = key, k1 = key >> 32; 316 317 __jhash_mix(idx, k0, k1); /* Macro that modifies arguments! */ 318 319 return k0 | (u64)k1 << 32; 320 } 321 322 void lockdep_off(void) 323 { 324 current->lockdep_recursion++; 325 } 326 EXPORT_SYMBOL(lockdep_off); 327 328 void lockdep_on(void) 329 { 330 current->lockdep_recursion--; 331 } 332 EXPORT_SYMBOL(lockdep_on); 333 334 /* 335 * Debugging switches: 336 */ 337 338 #define VERBOSE 0 339 #define VERY_VERBOSE 0 340 341 #if VERBOSE 342 # define HARDIRQ_VERBOSE 1 343 # define SOFTIRQ_VERBOSE 1 344 #else 345 # define HARDIRQ_VERBOSE 0 346 # define SOFTIRQ_VERBOSE 0 347 #endif 348 349 #if VERBOSE || HARDIRQ_VERBOSE || SOFTIRQ_VERBOSE 350 /* 351 * Quick filtering for interesting events: 352 */ 353 static int class_filter(struct lock_class *class) 354 { 355 #if 0 356 /* Example */ 357 if (class->name_version == 1 && 358 !strcmp(class->name, "lockname")) 359 return 1; 360 if (class->name_version == 1 && 361 !strcmp(class->name, "&struct->lockfield")) 362 return 1; 363 #endif 364 /* Filter everything else. 1 would be to allow everything else */ 365 return 0; 366 } 367 #endif 368 369 static int verbose(struct lock_class *class) 370 { 371 #if VERBOSE 372 return class_filter(class); 373 #endif 374 return 0; 375 } 376 377 /* 378 * Stack-trace: tightly packed array of stack backtrace 379 * addresses. Protected by the graph_lock. 380 */ 381 unsigned long nr_stack_trace_entries; 382 static unsigned long stack_trace[MAX_STACK_TRACE_ENTRIES]; 383 384 static void print_lockdep_off(const char *bug_msg) 385 { 386 printk(KERN_DEBUG "%s\n", bug_msg); 387 printk(KERN_DEBUG "turning off the locking correctness validator.\n"); 388 #ifdef CONFIG_LOCK_STAT 389 printk(KERN_DEBUG "Please attach the output of /proc/lock_stat to the bug report\n"); 390 #endif 391 } 392 393 static int save_trace(struct stack_trace *trace) 394 { 395 trace->nr_entries = 0; 396 trace->max_entries = MAX_STACK_TRACE_ENTRIES - nr_stack_trace_entries; 397 trace->entries = stack_trace + nr_stack_trace_entries; 398 399 trace->skip = 3; 400 401 save_stack_trace(trace); 402 403 /* 404 * Some daft arches put -1 at the end to indicate its a full trace. 405 * 406 * <rant> this is buggy anyway, since it takes a whole extra entry so a 407 * complete trace that maxes out the entries provided will be reported 408 * as incomplete, friggin useless </rant> 409 */ 410 if (trace->nr_entries != 0 && 411 trace->entries[trace->nr_entries-1] == ULONG_MAX) 412 trace->nr_entries--; 413 414 trace->max_entries = trace->nr_entries; 415 416 nr_stack_trace_entries += trace->nr_entries; 417 418 if (nr_stack_trace_entries >= MAX_STACK_TRACE_ENTRIES-1) { 419 if (!debug_locks_off_graph_unlock()) 420 return 0; 421 422 print_lockdep_off("BUG: MAX_STACK_TRACE_ENTRIES too low!"); 423 dump_stack(); 424 425 return 0; 426 } 427 428 return 1; 429 } 430 431 unsigned int nr_hardirq_chains; 432 unsigned int nr_softirq_chains; 433 unsigned int nr_process_chains; 434 unsigned int max_lockdep_depth; 435 436 #ifdef CONFIG_DEBUG_LOCKDEP 437 /* 438 * Various lockdep statistics: 439 */ 440 DEFINE_PER_CPU(struct lockdep_stats, lockdep_stats); 441 #endif 442 443 /* 444 * Locking printouts: 445 */ 446 447 #define __USAGE(__STATE) \ 448 [LOCK_USED_IN_##__STATE] = "IN-"__stringify(__STATE)"-W", \ 449 [LOCK_ENABLED_##__STATE] = __stringify(__STATE)"-ON-W", \ 450 [LOCK_USED_IN_##__STATE##_READ] = "IN-"__stringify(__STATE)"-R",\ 451 [LOCK_ENABLED_##__STATE##_READ] = __stringify(__STATE)"-ON-R", 452 453 static const char *usage_str[] = 454 { 455 #define LOCKDEP_STATE(__STATE) __USAGE(__STATE) 456 #include "lockdep_states.h" 457 #undef LOCKDEP_STATE 458 [LOCK_USED] = "INITIAL USE", 459 }; 460 461 const char * __get_key_name(struct lockdep_subclass_key *key, char *str) 462 { 463 return kallsyms_lookup((unsigned long)key, NULL, NULL, NULL, str); 464 } 465 466 static inline unsigned long lock_flag(enum lock_usage_bit bit) 467 { 468 return 1UL << bit; 469 } 470 471 static char get_usage_char(struct lock_class *class, enum lock_usage_bit bit) 472 { 473 char c = '.'; 474 475 if (class->usage_mask & lock_flag(bit + 2)) 476 c = '+'; 477 if (class->usage_mask & lock_flag(bit)) { 478 c = '-'; 479 if (class->usage_mask & lock_flag(bit + 2)) 480 c = '?'; 481 } 482 483 return c; 484 } 485 486 void get_usage_chars(struct lock_class *class, char usage[LOCK_USAGE_CHARS]) 487 { 488 int i = 0; 489 490 #define LOCKDEP_STATE(__STATE) \ 491 usage[i++] = get_usage_char(class, LOCK_USED_IN_##__STATE); \ 492 usage[i++] = get_usage_char(class, LOCK_USED_IN_##__STATE##_READ); 493 #include "lockdep_states.h" 494 #undef LOCKDEP_STATE 495 496 usage[i] = '\0'; 497 } 498 499 static void __print_lock_name(struct lock_class *class) 500 { 501 char str[KSYM_NAME_LEN]; 502 const char *name; 503 504 name = class->name; 505 if (!name) { 506 name = __get_key_name(class->key, str); 507 printk(KERN_CONT "%s", name); 508 } else { 509 printk(KERN_CONT "%s", name); 510 if (class->name_version > 1) 511 printk(KERN_CONT "#%d", class->name_version); 512 if (class->subclass) 513 printk(KERN_CONT "/%d", class->subclass); 514 } 515 } 516 517 static void print_lock_name(struct lock_class *class) 518 { 519 char usage[LOCK_USAGE_CHARS]; 520 521 get_usage_chars(class, usage); 522 523 printk(KERN_CONT " ("); 524 __print_lock_name(class); 525 printk(KERN_CONT "){%s}", usage); 526 } 527 528 static void print_lockdep_cache(struct lockdep_map *lock) 529 { 530 const char *name; 531 char str[KSYM_NAME_LEN]; 532 533 name = lock->name; 534 if (!name) 535 name = __get_key_name(lock->key->subkeys, str); 536 537 printk(KERN_CONT "%s", name); 538 } 539 540 static void print_lock(struct held_lock *hlock) 541 { 542 /* 543 * We can be called locklessly through debug_show_all_locks() so be 544 * extra careful, the hlock might have been released and cleared. 545 */ 546 unsigned int class_idx = hlock->class_idx; 547 548 /* Don't re-read hlock->class_idx, can't use READ_ONCE() on bitfields: */ 549 barrier(); 550 551 if (!class_idx || (class_idx - 1) >= MAX_LOCKDEP_KEYS) { 552 printk(KERN_CONT "<RELEASED>\n"); 553 return; 554 } 555 556 printk(KERN_CONT "%p", hlock->instance); 557 print_lock_name(lock_classes + class_idx - 1); 558 printk(KERN_CONT ", at: %pS\n", (void *)hlock->acquire_ip); 559 } 560 561 static void lockdep_print_held_locks(struct task_struct *p) 562 { 563 int i, depth = READ_ONCE(p->lockdep_depth); 564 565 if (!depth) 566 printk("no locks held by %s/%d.\n", p->comm, task_pid_nr(p)); 567 else 568 printk("%d lock%s held by %s/%d:\n", depth, 569 depth > 1 ? "s" : "", p->comm, task_pid_nr(p)); 570 /* 571 * It's not reliable to print a task's held locks if it's not sleeping 572 * and it's not the current task. 573 */ 574 if (p->state == TASK_RUNNING && p != current) 575 return; 576 for (i = 0; i < depth; i++) { 577 printk(" #%d: ", i); 578 print_lock(p->held_locks + i); 579 } 580 } 581 582 static void print_kernel_ident(void) 583 { 584 printk("%s %.*s %s\n", init_utsname()->release, 585 (int)strcspn(init_utsname()->version, " "), 586 init_utsname()->version, 587 print_tainted()); 588 } 589 590 static int very_verbose(struct lock_class *class) 591 { 592 #if VERY_VERBOSE 593 return class_filter(class); 594 #endif 595 return 0; 596 } 597 598 /* 599 * Is this the address of a static object: 600 */ 601 #ifdef __KERNEL__ 602 static int static_obj(void *obj) 603 { 604 unsigned long start = (unsigned long) &_stext, 605 end = (unsigned long) &_end, 606 addr = (unsigned long) obj; 607 608 /* 609 * static variable? 610 */ 611 if ((addr >= start) && (addr < end)) 612 return 1; 613 614 if (arch_is_kernel_data(addr)) 615 return 1; 616 617 /* 618 * in-kernel percpu var? 619 */ 620 if (is_kernel_percpu_address(addr)) 621 return 1; 622 623 /* 624 * module static or percpu var? 625 */ 626 return is_module_address(addr) || is_module_percpu_address(addr); 627 } 628 #endif 629 630 /* 631 * To make lock name printouts unique, we calculate a unique 632 * class->name_version generation counter. The caller must hold the graph 633 * lock. 634 */ 635 static int count_matching_names(struct lock_class *new_class) 636 { 637 struct lock_class *class; 638 int count = 0; 639 640 if (!new_class->name) 641 return 0; 642 643 list_for_each_entry(class, &all_lock_classes, lock_entry) { 644 if (new_class->key - new_class->subclass == class->key) 645 return class->name_version; 646 if (class->name && !strcmp(class->name, new_class->name)) 647 count = max(count, class->name_version); 648 } 649 650 return count + 1; 651 } 652 653 static inline struct lock_class * 654 look_up_lock_class(const struct lockdep_map *lock, unsigned int subclass) 655 { 656 struct lockdep_subclass_key *key; 657 struct hlist_head *hash_head; 658 struct lock_class *class; 659 660 if (unlikely(subclass >= MAX_LOCKDEP_SUBCLASSES)) { 661 debug_locks_off(); 662 printk(KERN_ERR 663 "BUG: looking up invalid subclass: %u\n", subclass); 664 printk(KERN_ERR 665 "turning off the locking correctness validator.\n"); 666 dump_stack(); 667 return NULL; 668 } 669 670 /* 671 * If it is not initialised then it has never been locked, 672 * so it won't be present in the hash table. 673 */ 674 if (unlikely(!lock->key)) 675 return NULL; 676 677 /* 678 * NOTE: the class-key must be unique. For dynamic locks, a static 679 * lock_class_key variable is passed in through the mutex_init() 680 * (or spin_lock_init()) call - which acts as the key. For static 681 * locks we use the lock object itself as the key. 682 */ 683 BUILD_BUG_ON(sizeof(struct lock_class_key) > 684 sizeof(struct lockdep_map)); 685 686 key = lock->key->subkeys + subclass; 687 688 hash_head = classhashentry(key); 689 690 /* 691 * We do an RCU walk of the hash, see lockdep_free_key_range(). 692 */ 693 if (DEBUG_LOCKS_WARN_ON(!irqs_disabled())) 694 return NULL; 695 696 hlist_for_each_entry_rcu(class, hash_head, hash_entry) { 697 if (class->key == key) { 698 /* 699 * Huh! same key, different name? Did someone trample 700 * on some memory? We're most confused. 701 */ 702 WARN_ON_ONCE(class->name != lock->name); 703 return class; 704 } 705 } 706 707 return NULL; 708 } 709 710 /* 711 * Static locks do not have their class-keys yet - for them the key is 712 * the lock object itself. If the lock is in the per cpu area, the 713 * canonical address of the lock (per cpu offset removed) is used. 714 */ 715 static bool assign_lock_key(struct lockdep_map *lock) 716 { 717 unsigned long can_addr, addr = (unsigned long)lock; 718 719 if (__is_kernel_percpu_address(addr, &can_addr)) 720 lock->key = (void *)can_addr; 721 else if (__is_module_percpu_address(addr, &can_addr)) 722 lock->key = (void *)can_addr; 723 else if (static_obj(lock)) 724 lock->key = (void *)lock; 725 else { 726 /* Debug-check: all keys must be persistent! */ 727 debug_locks_off(); 728 pr_err("INFO: trying to register non-static key.\n"); 729 pr_err("the code is fine but needs lockdep annotation.\n"); 730 pr_err("turning off the locking correctness validator.\n"); 731 dump_stack(); 732 return false; 733 } 734 735 return true; 736 } 737 738 /* 739 * Register a lock's class in the hash-table, if the class is not present 740 * yet. Otherwise we look it up. We cache the result in the lock object 741 * itself, so actual lookup of the hash should be once per lock object. 742 */ 743 static struct lock_class * 744 register_lock_class(struct lockdep_map *lock, unsigned int subclass, int force) 745 { 746 struct lockdep_subclass_key *key; 747 struct hlist_head *hash_head; 748 struct lock_class *class; 749 750 DEBUG_LOCKS_WARN_ON(!irqs_disabled()); 751 752 class = look_up_lock_class(lock, subclass); 753 if (likely(class)) 754 goto out_set_class_cache; 755 756 if (!lock->key) { 757 if (!assign_lock_key(lock)) 758 return NULL; 759 } else if (!static_obj(lock->key)) { 760 return NULL; 761 } 762 763 key = lock->key->subkeys + subclass; 764 hash_head = classhashentry(key); 765 766 if (!graph_lock()) { 767 return NULL; 768 } 769 /* 770 * We have to do the hash-walk again, to avoid races 771 * with another CPU: 772 */ 773 hlist_for_each_entry_rcu(class, hash_head, hash_entry) { 774 if (class->key == key) 775 goto out_unlock_set; 776 } 777 778 /* 779 * Allocate a new key from the static array, and add it to 780 * the hash: 781 */ 782 if (nr_lock_classes >= MAX_LOCKDEP_KEYS) { 783 if (!debug_locks_off_graph_unlock()) { 784 return NULL; 785 } 786 787 print_lockdep_off("BUG: MAX_LOCKDEP_KEYS too low!"); 788 dump_stack(); 789 return NULL; 790 } 791 class = lock_classes + nr_lock_classes++; 792 debug_atomic_inc(nr_unused_locks); 793 class->key = key; 794 class->name = lock->name; 795 class->subclass = subclass; 796 INIT_LIST_HEAD(&class->locks_before); 797 INIT_LIST_HEAD(&class->locks_after); 798 class->name_version = count_matching_names(class); 799 /* 800 * We use RCU's safe list-add method to make 801 * parallel walking of the hash-list safe: 802 */ 803 hlist_add_head_rcu(&class->hash_entry, hash_head); 804 /* 805 * Add it to the global list of classes: 806 */ 807 list_add_tail(&class->lock_entry, &all_lock_classes); 808 809 if (verbose(class)) { 810 graph_unlock(); 811 812 printk("\nnew class %px: %s", class->key, class->name); 813 if (class->name_version > 1) 814 printk(KERN_CONT "#%d", class->name_version); 815 printk(KERN_CONT "\n"); 816 dump_stack(); 817 818 if (!graph_lock()) { 819 return NULL; 820 } 821 } 822 out_unlock_set: 823 graph_unlock(); 824 825 out_set_class_cache: 826 if (!subclass || force) 827 lock->class_cache[0] = class; 828 else if (subclass < NR_LOCKDEP_CACHING_CLASSES) 829 lock->class_cache[subclass] = class; 830 831 /* 832 * Hash collision, did we smoke some? We found a class with a matching 833 * hash but the subclass -- which is hashed in -- didn't match. 834 */ 835 if (DEBUG_LOCKS_WARN_ON(class->subclass != subclass)) 836 return NULL; 837 838 return class; 839 } 840 841 #ifdef CONFIG_PROVE_LOCKING 842 /* 843 * Allocate a lockdep entry. (assumes the graph_lock held, returns 844 * with NULL on failure) 845 */ 846 static struct lock_list *alloc_list_entry(void) 847 { 848 if (nr_list_entries >= MAX_LOCKDEP_ENTRIES) { 849 if (!debug_locks_off_graph_unlock()) 850 return NULL; 851 852 print_lockdep_off("BUG: MAX_LOCKDEP_ENTRIES too low!"); 853 dump_stack(); 854 return NULL; 855 } 856 return list_entries + nr_list_entries++; 857 } 858 859 /* 860 * Add a new dependency to the head of the list: 861 */ 862 static int add_lock_to_list(struct lock_class *this, struct list_head *head, 863 unsigned long ip, int distance, 864 struct stack_trace *trace) 865 { 866 struct lock_list *entry; 867 /* 868 * Lock not present yet - get a new dependency struct and 869 * add it to the list: 870 */ 871 entry = alloc_list_entry(); 872 if (!entry) 873 return 0; 874 875 entry->class = this; 876 entry->distance = distance; 877 entry->trace = *trace; 878 /* 879 * Both allocation and removal are done under the graph lock; but 880 * iteration is under RCU-sched; see look_up_lock_class() and 881 * lockdep_free_key_range(). 882 */ 883 list_add_tail_rcu(&entry->entry, head); 884 885 return 1; 886 } 887 888 /* 889 * For good efficiency of modular, we use power of 2 890 */ 891 #define MAX_CIRCULAR_QUEUE_SIZE 4096UL 892 #define CQ_MASK (MAX_CIRCULAR_QUEUE_SIZE-1) 893 894 /* 895 * The circular_queue and helpers is used to implement the 896 * breadth-first search(BFS)algorithem, by which we can build 897 * the shortest path from the next lock to be acquired to the 898 * previous held lock if there is a circular between them. 899 */ 900 struct circular_queue { 901 unsigned long element[MAX_CIRCULAR_QUEUE_SIZE]; 902 unsigned int front, rear; 903 }; 904 905 static struct circular_queue lock_cq; 906 907 unsigned int max_bfs_queue_depth; 908 909 static unsigned int lockdep_dependency_gen_id; 910 911 static inline void __cq_init(struct circular_queue *cq) 912 { 913 cq->front = cq->rear = 0; 914 lockdep_dependency_gen_id++; 915 } 916 917 static inline int __cq_empty(struct circular_queue *cq) 918 { 919 return (cq->front == cq->rear); 920 } 921 922 static inline int __cq_full(struct circular_queue *cq) 923 { 924 return ((cq->rear + 1) & CQ_MASK) == cq->front; 925 } 926 927 static inline int __cq_enqueue(struct circular_queue *cq, unsigned long elem) 928 { 929 if (__cq_full(cq)) 930 return -1; 931 932 cq->element[cq->rear] = elem; 933 cq->rear = (cq->rear + 1) & CQ_MASK; 934 return 0; 935 } 936 937 static inline int __cq_dequeue(struct circular_queue *cq, unsigned long *elem) 938 { 939 if (__cq_empty(cq)) 940 return -1; 941 942 *elem = cq->element[cq->front]; 943 cq->front = (cq->front + 1) & CQ_MASK; 944 return 0; 945 } 946 947 static inline unsigned int __cq_get_elem_count(struct circular_queue *cq) 948 { 949 return (cq->rear - cq->front) & CQ_MASK; 950 } 951 952 static inline void mark_lock_accessed(struct lock_list *lock, 953 struct lock_list *parent) 954 { 955 unsigned long nr; 956 957 nr = lock - list_entries; 958 WARN_ON(nr >= nr_list_entries); /* Out-of-bounds, input fail */ 959 lock->parent = parent; 960 lock->class->dep_gen_id = lockdep_dependency_gen_id; 961 } 962 963 static inline unsigned long lock_accessed(struct lock_list *lock) 964 { 965 unsigned long nr; 966 967 nr = lock - list_entries; 968 WARN_ON(nr >= nr_list_entries); /* Out-of-bounds, input fail */ 969 return lock->class->dep_gen_id == lockdep_dependency_gen_id; 970 } 971 972 static inline struct lock_list *get_lock_parent(struct lock_list *child) 973 { 974 return child->parent; 975 } 976 977 static inline int get_lock_depth(struct lock_list *child) 978 { 979 int depth = 0; 980 struct lock_list *parent; 981 982 while ((parent = get_lock_parent(child))) { 983 child = parent; 984 depth++; 985 } 986 return depth; 987 } 988 989 static int __bfs(struct lock_list *source_entry, 990 void *data, 991 int (*match)(struct lock_list *entry, void *data), 992 struct lock_list **target_entry, 993 int forward) 994 { 995 struct lock_list *entry; 996 struct list_head *head; 997 struct circular_queue *cq = &lock_cq; 998 int ret = 1; 999 1000 if (match(source_entry, data)) { 1001 *target_entry = source_entry; 1002 ret = 0; 1003 goto exit; 1004 } 1005 1006 if (forward) 1007 head = &source_entry->class->locks_after; 1008 else 1009 head = &source_entry->class->locks_before; 1010 1011 if (list_empty(head)) 1012 goto exit; 1013 1014 __cq_init(cq); 1015 __cq_enqueue(cq, (unsigned long)source_entry); 1016 1017 while (!__cq_empty(cq)) { 1018 struct lock_list *lock; 1019 1020 __cq_dequeue(cq, (unsigned long *)&lock); 1021 1022 if (!lock->class) { 1023 ret = -2; 1024 goto exit; 1025 } 1026 1027 if (forward) 1028 head = &lock->class->locks_after; 1029 else 1030 head = &lock->class->locks_before; 1031 1032 DEBUG_LOCKS_WARN_ON(!irqs_disabled()); 1033 1034 list_for_each_entry_rcu(entry, head, entry) { 1035 if (!lock_accessed(entry)) { 1036 unsigned int cq_depth; 1037 mark_lock_accessed(entry, lock); 1038 if (match(entry, data)) { 1039 *target_entry = entry; 1040 ret = 0; 1041 goto exit; 1042 } 1043 1044 if (__cq_enqueue(cq, (unsigned long)entry)) { 1045 ret = -1; 1046 goto exit; 1047 } 1048 cq_depth = __cq_get_elem_count(cq); 1049 if (max_bfs_queue_depth < cq_depth) 1050 max_bfs_queue_depth = cq_depth; 1051 } 1052 } 1053 } 1054 exit: 1055 return ret; 1056 } 1057 1058 static inline int __bfs_forwards(struct lock_list *src_entry, 1059 void *data, 1060 int (*match)(struct lock_list *entry, void *data), 1061 struct lock_list **target_entry) 1062 { 1063 return __bfs(src_entry, data, match, target_entry, 1); 1064 1065 } 1066 1067 static inline int __bfs_backwards(struct lock_list *src_entry, 1068 void *data, 1069 int (*match)(struct lock_list *entry, void *data), 1070 struct lock_list **target_entry) 1071 { 1072 return __bfs(src_entry, data, match, target_entry, 0); 1073 1074 } 1075 1076 /* 1077 * Recursive, forwards-direction lock-dependency checking, used for 1078 * both noncyclic checking and for hardirq-unsafe/softirq-unsafe 1079 * checking. 1080 */ 1081 1082 /* 1083 * Print a dependency chain entry (this is only done when a deadlock 1084 * has been detected): 1085 */ 1086 static noinline int 1087 print_circular_bug_entry(struct lock_list *target, int depth) 1088 { 1089 if (debug_locks_silent) 1090 return 0; 1091 printk("\n-> #%u", depth); 1092 print_lock_name(target->class); 1093 printk(KERN_CONT ":\n"); 1094 print_stack_trace(&target->trace, 6); 1095 1096 return 0; 1097 } 1098 1099 static void 1100 print_circular_lock_scenario(struct held_lock *src, 1101 struct held_lock *tgt, 1102 struct lock_list *prt) 1103 { 1104 struct lock_class *source = hlock_class(src); 1105 struct lock_class *target = hlock_class(tgt); 1106 struct lock_class *parent = prt->class; 1107 1108 /* 1109 * A direct locking problem where unsafe_class lock is taken 1110 * directly by safe_class lock, then all we need to show 1111 * is the deadlock scenario, as it is obvious that the 1112 * unsafe lock is taken under the safe lock. 1113 * 1114 * But if there is a chain instead, where the safe lock takes 1115 * an intermediate lock (middle_class) where this lock is 1116 * not the same as the safe lock, then the lock chain is 1117 * used to describe the problem. Otherwise we would need 1118 * to show a different CPU case for each link in the chain 1119 * from the safe_class lock to the unsafe_class lock. 1120 */ 1121 if (parent != source) { 1122 printk("Chain exists of:\n "); 1123 __print_lock_name(source); 1124 printk(KERN_CONT " --> "); 1125 __print_lock_name(parent); 1126 printk(KERN_CONT " --> "); 1127 __print_lock_name(target); 1128 printk(KERN_CONT "\n\n"); 1129 } 1130 1131 printk(" Possible unsafe locking scenario:\n\n"); 1132 printk(" CPU0 CPU1\n"); 1133 printk(" ---- ----\n"); 1134 printk(" lock("); 1135 __print_lock_name(target); 1136 printk(KERN_CONT ");\n"); 1137 printk(" lock("); 1138 __print_lock_name(parent); 1139 printk(KERN_CONT ");\n"); 1140 printk(" lock("); 1141 __print_lock_name(target); 1142 printk(KERN_CONT ");\n"); 1143 printk(" lock("); 1144 __print_lock_name(source); 1145 printk(KERN_CONT ");\n"); 1146 printk("\n *** DEADLOCK ***\n\n"); 1147 } 1148 1149 /* 1150 * When a circular dependency is detected, print the 1151 * header first: 1152 */ 1153 static noinline int 1154 print_circular_bug_header(struct lock_list *entry, unsigned int depth, 1155 struct held_lock *check_src, 1156 struct held_lock *check_tgt) 1157 { 1158 struct task_struct *curr = current; 1159 1160 if (debug_locks_silent) 1161 return 0; 1162 1163 pr_warn("\n"); 1164 pr_warn("======================================================\n"); 1165 pr_warn("WARNING: possible circular locking dependency detected\n"); 1166 print_kernel_ident(); 1167 pr_warn("------------------------------------------------------\n"); 1168 pr_warn("%s/%d is trying to acquire lock:\n", 1169 curr->comm, task_pid_nr(curr)); 1170 print_lock(check_src); 1171 1172 pr_warn("\nbut task is already holding lock:\n"); 1173 1174 print_lock(check_tgt); 1175 pr_warn("\nwhich lock already depends on the new lock.\n\n"); 1176 pr_warn("\nthe existing dependency chain (in reverse order) is:\n"); 1177 1178 print_circular_bug_entry(entry, depth); 1179 1180 return 0; 1181 } 1182 1183 static inline int class_equal(struct lock_list *entry, void *data) 1184 { 1185 return entry->class == data; 1186 } 1187 1188 static noinline int print_circular_bug(struct lock_list *this, 1189 struct lock_list *target, 1190 struct held_lock *check_src, 1191 struct held_lock *check_tgt, 1192 struct stack_trace *trace) 1193 { 1194 struct task_struct *curr = current; 1195 struct lock_list *parent; 1196 struct lock_list *first_parent; 1197 int depth; 1198 1199 if (!debug_locks_off_graph_unlock() || debug_locks_silent) 1200 return 0; 1201 1202 if (!save_trace(&this->trace)) 1203 return 0; 1204 1205 depth = get_lock_depth(target); 1206 1207 print_circular_bug_header(target, depth, check_src, check_tgt); 1208 1209 parent = get_lock_parent(target); 1210 first_parent = parent; 1211 1212 while (parent) { 1213 print_circular_bug_entry(parent, --depth); 1214 parent = get_lock_parent(parent); 1215 } 1216 1217 printk("\nother info that might help us debug this:\n\n"); 1218 print_circular_lock_scenario(check_src, check_tgt, 1219 first_parent); 1220 1221 lockdep_print_held_locks(curr); 1222 1223 printk("\nstack backtrace:\n"); 1224 dump_stack(); 1225 1226 return 0; 1227 } 1228 1229 static noinline int print_bfs_bug(int ret) 1230 { 1231 if (!debug_locks_off_graph_unlock()) 1232 return 0; 1233 1234 /* 1235 * Breadth-first-search failed, graph got corrupted? 1236 */ 1237 WARN(1, "lockdep bfs error:%d\n", ret); 1238 1239 return 0; 1240 } 1241 1242 static int noop_count(struct lock_list *entry, void *data) 1243 { 1244 (*(unsigned long *)data)++; 1245 return 0; 1246 } 1247 1248 static unsigned long __lockdep_count_forward_deps(struct lock_list *this) 1249 { 1250 unsigned long count = 0; 1251 struct lock_list *uninitialized_var(target_entry); 1252 1253 __bfs_forwards(this, (void *)&count, noop_count, &target_entry); 1254 1255 return count; 1256 } 1257 unsigned long lockdep_count_forward_deps(struct lock_class *class) 1258 { 1259 unsigned long ret, flags; 1260 struct lock_list this; 1261 1262 this.parent = NULL; 1263 this.class = class; 1264 1265 raw_local_irq_save(flags); 1266 arch_spin_lock(&lockdep_lock); 1267 ret = __lockdep_count_forward_deps(&this); 1268 arch_spin_unlock(&lockdep_lock); 1269 raw_local_irq_restore(flags); 1270 1271 return ret; 1272 } 1273 1274 static unsigned long __lockdep_count_backward_deps(struct lock_list *this) 1275 { 1276 unsigned long count = 0; 1277 struct lock_list *uninitialized_var(target_entry); 1278 1279 __bfs_backwards(this, (void *)&count, noop_count, &target_entry); 1280 1281 return count; 1282 } 1283 1284 unsigned long lockdep_count_backward_deps(struct lock_class *class) 1285 { 1286 unsigned long ret, flags; 1287 struct lock_list this; 1288 1289 this.parent = NULL; 1290 this.class = class; 1291 1292 raw_local_irq_save(flags); 1293 arch_spin_lock(&lockdep_lock); 1294 ret = __lockdep_count_backward_deps(&this); 1295 arch_spin_unlock(&lockdep_lock); 1296 raw_local_irq_restore(flags); 1297 1298 return ret; 1299 } 1300 1301 /* 1302 * Prove that the dependency graph starting at <entry> can not 1303 * lead to <target>. Print an error and return 0 if it does. 1304 */ 1305 static noinline int 1306 check_noncircular(struct lock_list *root, struct lock_class *target, 1307 struct lock_list **target_entry) 1308 { 1309 int result; 1310 1311 debug_atomic_inc(nr_cyclic_checks); 1312 1313 result = __bfs_forwards(root, target, class_equal, target_entry); 1314 1315 return result; 1316 } 1317 1318 static noinline int 1319 check_redundant(struct lock_list *root, struct lock_class *target, 1320 struct lock_list **target_entry) 1321 { 1322 int result; 1323 1324 debug_atomic_inc(nr_redundant_checks); 1325 1326 result = __bfs_forwards(root, target, class_equal, target_entry); 1327 1328 return result; 1329 } 1330 1331 #if defined(CONFIG_TRACE_IRQFLAGS) && defined(CONFIG_PROVE_LOCKING) 1332 /* 1333 * Forwards and backwards subgraph searching, for the purposes of 1334 * proving that two subgraphs can be connected by a new dependency 1335 * without creating any illegal irq-safe -> irq-unsafe lock dependency. 1336 */ 1337 1338 static inline int usage_match(struct lock_list *entry, void *bit) 1339 { 1340 return entry->class->usage_mask & (1 << (enum lock_usage_bit)bit); 1341 } 1342 1343 1344 1345 /* 1346 * Find a node in the forwards-direction dependency sub-graph starting 1347 * at @root->class that matches @bit. 1348 * 1349 * Return 0 if such a node exists in the subgraph, and put that node 1350 * into *@target_entry. 1351 * 1352 * Return 1 otherwise and keep *@target_entry unchanged. 1353 * Return <0 on error. 1354 */ 1355 static int 1356 find_usage_forwards(struct lock_list *root, enum lock_usage_bit bit, 1357 struct lock_list **target_entry) 1358 { 1359 int result; 1360 1361 debug_atomic_inc(nr_find_usage_forwards_checks); 1362 1363 result = __bfs_forwards(root, (void *)bit, usage_match, target_entry); 1364 1365 return result; 1366 } 1367 1368 /* 1369 * Find a node in the backwards-direction dependency sub-graph starting 1370 * at @root->class that matches @bit. 1371 * 1372 * Return 0 if such a node exists in the subgraph, and put that node 1373 * into *@target_entry. 1374 * 1375 * Return 1 otherwise and keep *@target_entry unchanged. 1376 * Return <0 on error. 1377 */ 1378 static int 1379 find_usage_backwards(struct lock_list *root, enum lock_usage_bit bit, 1380 struct lock_list **target_entry) 1381 { 1382 int result; 1383 1384 debug_atomic_inc(nr_find_usage_backwards_checks); 1385 1386 result = __bfs_backwards(root, (void *)bit, usage_match, target_entry); 1387 1388 return result; 1389 } 1390 1391 static void print_lock_class_header(struct lock_class *class, int depth) 1392 { 1393 int bit; 1394 1395 printk("%*s->", depth, ""); 1396 print_lock_name(class); 1397 #ifdef CONFIG_DEBUG_LOCKDEP 1398 printk(KERN_CONT " ops: %lu", debug_class_ops_read(class)); 1399 #endif 1400 printk(KERN_CONT " {\n"); 1401 1402 for (bit = 0; bit < LOCK_USAGE_STATES; bit++) { 1403 if (class->usage_mask & (1 << bit)) { 1404 int len = depth; 1405 1406 len += printk("%*s %s", depth, "", usage_str[bit]); 1407 len += printk(KERN_CONT " at:\n"); 1408 print_stack_trace(class->usage_traces + bit, len); 1409 } 1410 } 1411 printk("%*s }\n", depth, ""); 1412 1413 printk("%*s ... key at: [<%px>] %pS\n", 1414 depth, "", class->key, class->key); 1415 } 1416 1417 /* 1418 * printk the shortest lock dependencies from @start to @end in reverse order: 1419 */ 1420 static void __used 1421 print_shortest_lock_dependencies(struct lock_list *leaf, 1422 struct lock_list *root) 1423 { 1424 struct lock_list *entry = leaf; 1425 int depth; 1426 1427 /*compute depth from generated tree by BFS*/ 1428 depth = get_lock_depth(leaf); 1429 1430 do { 1431 print_lock_class_header(entry->class, depth); 1432 printk("%*s ... acquired at:\n", depth, ""); 1433 print_stack_trace(&entry->trace, 2); 1434 printk("\n"); 1435 1436 if (depth == 0 && (entry != root)) { 1437 printk("lockdep:%s bad path found in chain graph\n", __func__); 1438 break; 1439 } 1440 1441 entry = get_lock_parent(entry); 1442 depth--; 1443 } while (entry && (depth >= 0)); 1444 1445 return; 1446 } 1447 1448 static void 1449 print_irq_lock_scenario(struct lock_list *safe_entry, 1450 struct lock_list *unsafe_entry, 1451 struct lock_class *prev_class, 1452 struct lock_class *next_class) 1453 { 1454 struct lock_class *safe_class = safe_entry->class; 1455 struct lock_class *unsafe_class = unsafe_entry->class; 1456 struct lock_class *middle_class = prev_class; 1457 1458 if (middle_class == safe_class) 1459 middle_class = next_class; 1460 1461 /* 1462 * A direct locking problem where unsafe_class lock is taken 1463 * directly by safe_class lock, then all we need to show 1464 * is the deadlock scenario, as it is obvious that the 1465 * unsafe lock is taken under the safe lock. 1466 * 1467 * But if there is a chain instead, where the safe lock takes 1468 * an intermediate lock (middle_class) where this lock is 1469 * not the same as the safe lock, then the lock chain is 1470 * used to describe the problem. Otherwise we would need 1471 * to show a different CPU case for each link in the chain 1472 * from the safe_class lock to the unsafe_class lock. 1473 */ 1474 if (middle_class != unsafe_class) { 1475 printk("Chain exists of:\n "); 1476 __print_lock_name(safe_class); 1477 printk(KERN_CONT " --> "); 1478 __print_lock_name(middle_class); 1479 printk(KERN_CONT " --> "); 1480 __print_lock_name(unsafe_class); 1481 printk(KERN_CONT "\n\n"); 1482 } 1483 1484 printk(" Possible interrupt unsafe locking scenario:\n\n"); 1485 printk(" CPU0 CPU1\n"); 1486 printk(" ---- ----\n"); 1487 printk(" lock("); 1488 __print_lock_name(unsafe_class); 1489 printk(KERN_CONT ");\n"); 1490 printk(" local_irq_disable();\n"); 1491 printk(" lock("); 1492 __print_lock_name(safe_class); 1493 printk(KERN_CONT ");\n"); 1494 printk(" lock("); 1495 __print_lock_name(middle_class); 1496 printk(KERN_CONT ");\n"); 1497 printk(" <Interrupt>\n"); 1498 printk(" lock("); 1499 __print_lock_name(safe_class); 1500 printk(KERN_CONT ");\n"); 1501 printk("\n *** DEADLOCK ***\n\n"); 1502 } 1503 1504 static int 1505 print_bad_irq_dependency(struct task_struct *curr, 1506 struct lock_list *prev_root, 1507 struct lock_list *next_root, 1508 struct lock_list *backwards_entry, 1509 struct lock_list *forwards_entry, 1510 struct held_lock *prev, 1511 struct held_lock *next, 1512 enum lock_usage_bit bit1, 1513 enum lock_usage_bit bit2, 1514 const char *irqclass) 1515 { 1516 if (!debug_locks_off_graph_unlock() || debug_locks_silent) 1517 return 0; 1518 1519 pr_warn("\n"); 1520 pr_warn("=====================================================\n"); 1521 pr_warn("WARNING: %s-safe -> %s-unsafe lock order detected\n", 1522 irqclass, irqclass); 1523 print_kernel_ident(); 1524 pr_warn("-----------------------------------------------------\n"); 1525 pr_warn("%s/%d [HC%u[%lu]:SC%u[%lu]:HE%u:SE%u] is trying to acquire:\n", 1526 curr->comm, task_pid_nr(curr), 1527 curr->hardirq_context, hardirq_count() >> HARDIRQ_SHIFT, 1528 curr->softirq_context, softirq_count() >> SOFTIRQ_SHIFT, 1529 curr->hardirqs_enabled, 1530 curr->softirqs_enabled); 1531 print_lock(next); 1532 1533 pr_warn("\nand this task is already holding:\n"); 1534 print_lock(prev); 1535 pr_warn("which would create a new lock dependency:\n"); 1536 print_lock_name(hlock_class(prev)); 1537 pr_cont(" ->"); 1538 print_lock_name(hlock_class(next)); 1539 pr_cont("\n"); 1540 1541 pr_warn("\nbut this new dependency connects a %s-irq-safe lock:\n", 1542 irqclass); 1543 print_lock_name(backwards_entry->class); 1544 pr_warn("\n... which became %s-irq-safe at:\n", irqclass); 1545 1546 print_stack_trace(backwards_entry->class->usage_traces + bit1, 1); 1547 1548 pr_warn("\nto a %s-irq-unsafe lock:\n", irqclass); 1549 print_lock_name(forwards_entry->class); 1550 pr_warn("\n... which became %s-irq-unsafe at:\n", irqclass); 1551 pr_warn("..."); 1552 1553 print_stack_trace(forwards_entry->class->usage_traces + bit2, 1); 1554 1555 pr_warn("\nother info that might help us debug this:\n\n"); 1556 print_irq_lock_scenario(backwards_entry, forwards_entry, 1557 hlock_class(prev), hlock_class(next)); 1558 1559 lockdep_print_held_locks(curr); 1560 1561 pr_warn("\nthe dependencies between %s-irq-safe lock and the holding lock:\n", irqclass); 1562 if (!save_trace(&prev_root->trace)) 1563 return 0; 1564 print_shortest_lock_dependencies(backwards_entry, prev_root); 1565 1566 pr_warn("\nthe dependencies between the lock to be acquired"); 1567 pr_warn(" and %s-irq-unsafe lock:\n", irqclass); 1568 if (!save_trace(&next_root->trace)) 1569 return 0; 1570 print_shortest_lock_dependencies(forwards_entry, next_root); 1571 1572 pr_warn("\nstack backtrace:\n"); 1573 dump_stack(); 1574 1575 return 0; 1576 } 1577 1578 static int 1579 check_usage(struct task_struct *curr, struct held_lock *prev, 1580 struct held_lock *next, enum lock_usage_bit bit_backwards, 1581 enum lock_usage_bit bit_forwards, const char *irqclass) 1582 { 1583 int ret; 1584 struct lock_list this, that; 1585 struct lock_list *uninitialized_var(target_entry); 1586 struct lock_list *uninitialized_var(target_entry1); 1587 1588 this.parent = NULL; 1589 1590 this.class = hlock_class(prev); 1591 ret = find_usage_backwards(&this, bit_backwards, &target_entry); 1592 if (ret < 0) 1593 return print_bfs_bug(ret); 1594 if (ret == 1) 1595 return ret; 1596 1597 that.parent = NULL; 1598 that.class = hlock_class(next); 1599 ret = find_usage_forwards(&that, bit_forwards, &target_entry1); 1600 if (ret < 0) 1601 return print_bfs_bug(ret); 1602 if (ret == 1) 1603 return ret; 1604 1605 return print_bad_irq_dependency(curr, &this, &that, 1606 target_entry, target_entry1, 1607 prev, next, 1608 bit_backwards, bit_forwards, irqclass); 1609 } 1610 1611 static const char *state_names[] = { 1612 #define LOCKDEP_STATE(__STATE) \ 1613 __stringify(__STATE), 1614 #include "lockdep_states.h" 1615 #undef LOCKDEP_STATE 1616 }; 1617 1618 static const char *state_rnames[] = { 1619 #define LOCKDEP_STATE(__STATE) \ 1620 __stringify(__STATE)"-READ", 1621 #include "lockdep_states.h" 1622 #undef LOCKDEP_STATE 1623 }; 1624 1625 static inline const char *state_name(enum lock_usage_bit bit) 1626 { 1627 return (bit & 1) ? state_rnames[bit >> 2] : state_names[bit >> 2]; 1628 } 1629 1630 static int exclusive_bit(int new_bit) 1631 { 1632 /* 1633 * USED_IN 1634 * USED_IN_READ 1635 * ENABLED 1636 * ENABLED_READ 1637 * 1638 * bit 0 - write/read 1639 * bit 1 - used_in/enabled 1640 * bit 2+ state 1641 */ 1642 1643 int state = new_bit & ~3; 1644 int dir = new_bit & 2; 1645 1646 /* 1647 * keep state, bit flip the direction and strip read. 1648 */ 1649 return state | (dir ^ 2); 1650 } 1651 1652 static int check_irq_usage(struct task_struct *curr, struct held_lock *prev, 1653 struct held_lock *next, enum lock_usage_bit bit) 1654 { 1655 /* 1656 * Prove that the new dependency does not connect a hardirq-safe 1657 * lock with a hardirq-unsafe lock - to achieve this we search 1658 * the backwards-subgraph starting at <prev>, and the 1659 * forwards-subgraph starting at <next>: 1660 */ 1661 if (!check_usage(curr, prev, next, bit, 1662 exclusive_bit(bit), state_name(bit))) 1663 return 0; 1664 1665 bit++; /* _READ */ 1666 1667 /* 1668 * Prove that the new dependency does not connect a hardirq-safe-read 1669 * lock with a hardirq-unsafe lock - to achieve this we search 1670 * the backwards-subgraph starting at <prev>, and the 1671 * forwards-subgraph starting at <next>: 1672 */ 1673 if (!check_usage(curr, prev, next, bit, 1674 exclusive_bit(bit), state_name(bit))) 1675 return 0; 1676 1677 return 1; 1678 } 1679 1680 static int 1681 check_prev_add_irq(struct task_struct *curr, struct held_lock *prev, 1682 struct held_lock *next) 1683 { 1684 #define LOCKDEP_STATE(__STATE) \ 1685 if (!check_irq_usage(curr, prev, next, LOCK_USED_IN_##__STATE)) \ 1686 return 0; 1687 #include "lockdep_states.h" 1688 #undef LOCKDEP_STATE 1689 1690 return 1; 1691 } 1692 1693 static void inc_chains(void) 1694 { 1695 if (current->hardirq_context) 1696 nr_hardirq_chains++; 1697 else { 1698 if (current->softirq_context) 1699 nr_softirq_chains++; 1700 else 1701 nr_process_chains++; 1702 } 1703 } 1704 1705 #else 1706 1707 static inline int 1708 check_prev_add_irq(struct task_struct *curr, struct held_lock *prev, 1709 struct held_lock *next) 1710 { 1711 return 1; 1712 } 1713 1714 static inline void inc_chains(void) 1715 { 1716 nr_process_chains++; 1717 } 1718 1719 #endif 1720 1721 static void 1722 print_deadlock_scenario(struct held_lock *nxt, 1723 struct held_lock *prv) 1724 { 1725 struct lock_class *next = hlock_class(nxt); 1726 struct lock_class *prev = hlock_class(prv); 1727 1728 printk(" Possible unsafe locking scenario:\n\n"); 1729 printk(" CPU0\n"); 1730 printk(" ----\n"); 1731 printk(" lock("); 1732 __print_lock_name(prev); 1733 printk(KERN_CONT ");\n"); 1734 printk(" lock("); 1735 __print_lock_name(next); 1736 printk(KERN_CONT ");\n"); 1737 printk("\n *** DEADLOCK ***\n\n"); 1738 printk(" May be due to missing lock nesting notation\n\n"); 1739 } 1740 1741 static int 1742 print_deadlock_bug(struct task_struct *curr, struct held_lock *prev, 1743 struct held_lock *next) 1744 { 1745 if (!debug_locks_off_graph_unlock() || debug_locks_silent) 1746 return 0; 1747 1748 pr_warn("\n"); 1749 pr_warn("============================================\n"); 1750 pr_warn("WARNING: possible recursive locking detected\n"); 1751 print_kernel_ident(); 1752 pr_warn("--------------------------------------------\n"); 1753 pr_warn("%s/%d is trying to acquire lock:\n", 1754 curr->comm, task_pid_nr(curr)); 1755 print_lock(next); 1756 pr_warn("\nbut task is already holding lock:\n"); 1757 print_lock(prev); 1758 1759 pr_warn("\nother info that might help us debug this:\n"); 1760 print_deadlock_scenario(next, prev); 1761 lockdep_print_held_locks(curr); 1762 1763 pr_warn("\nstack backtrace:\n"); 1764 dump_stack(); 1765 1766 return 0; 1767 } 1768 1769 /* 1770 * Check whether we are holding such a class already. 1771 * 1772 * (Note that this has to be done separately, because the graph cannot 1773 * detect such classes of deadlocks.) 1774 * 1775 * Returns: 0 on deadlock detected, 1 on OK, 2 on recursive read 1776 */ 1777 static int 1778 check_deadlock(struct task_struct *curr, struct held_lock *next, 1779 struct lockdep_map *next_instance, int read) 1780 { 1781 struct held_lock *prev; 1782 struct held_lock *nest = NULL; 1783 int i; 1784 1785 for (i = 0; i < curr->lockdep_depth; i++) { 1786 prev = curr->held_locks + i; 1787 1788 if (prev->instance == next->nest_lock) 1789 nest = prev; 1790 1791 if (hlock_class(prev) != hlock_class(next)) 1792 continue; 1793 1794 /* 1795 * Allow read-after-read recursion of the same 1796 * lock class (i.e. read_lock(lock)+read_lock(lock)): 1797 */ 1798 if ((read == 2) && prev->read) 1799 return 2; 1800 1801 /* 1802 * We're holding the nest_lock, which serializes this lock's 1803 * nesting behaviour. 1804 */ 1805 if (nest) 1806 return 2; 1807 1808 return print_deadlock_bug(curr, prev, next); 1809 } 1810 return 1; 1811 } 1812 1813 /* 1814 * There was a chain-cache miss, and we are about to add a new dependency 1815 * to a previous lock. We recursively validate the following rules: 1816 * 1817 * - would the adding of the <prev> -> <next> dependency create a 1818 * circular dependency in the graph? [== circular deadlock] 1819 * 1820 * - does the new prev->next dependency connect any hardirq-safe lock 1821 * (in the full backwards-subgraph starting at <prev>) with any 1822 * hardirq-unsafe lock (in the full forwards-subgraph starting at 1823 * <next>)? [== illegal lock inversion with hardirq contexts] 1824 * 1825 * - does the new prev->next dependency connect any softirq-safe lock 1826 * (in the full backwards-subgraph starting at <prev>) with any 1827 * softirq-unsafe lock (in the full forwards-subgraph starting at 1828 * <next>)? [== illegal lock inversion with softirq contexts] 1829 * 1830 * any of these scenarios could lead to a deadlock. 1831 * 1832 * Then if all the validations pass, we add the forwards and backwards 1833 * dependency. 1834 */ 1835 static int 1836 check_prev_add(struct task_struct *curr, struct held_lock *prev, 1837 struct held_lock *next, int distance, struct stack_trace *trace, 1838 int (*save)(struct stack_trace *trace)) 1839 { 1840 struct lock_list *uninitialized_var(target_entry); 1841 struct lock_list *entry; 1842 struct lock_list this; 1843 int ret; 1844 1845 /* 1846 * Prove that the new <prev> -> <next> dependency would not 1847 * create a circular dependency in the graph. (We do this by 1848 * forward-recursing into the graph starting at <next>, and 1849 * checking whether we can reach <prev>.) 1850 * 1851 * We are using global variables to control the recursion, to 1852 * keep the stackframe size of the recursive functions low: 1853 */ 1854 this.class = hlock_class(next); 1855 this.parent = NULL; 1856 ret = check_noncircular(&this, hlock_class(prev), &target_entry); 1857 if (unlikely(!ret)) { 1858 if (!trace->entries) { 1859 /* 1860 * If @save fails here, the printing might trigger 1861 * a WARN but because of the !nr_entries it should 1862 * not do bad things. 1863 */ 1864 save(trace); 1865 } 1866 return print_circular_bug(&this, target_entry, next, prev, trace); 1867 } 1868 else if (unlikely(ret < 0)) 1869 return print_bfs_bug(ret); 1870 1871 if (!check_prev_add_irq(curr, prev, next)) 1872 return 0; 1873 1874 /* 1875 * For recursive read-locks we do all the dependency checks, 1876 * but we dont store read-triggered dependencies (only 1877 * write-triggered dependencies). This ensures that only the 1878 * write-side dependencies matter, and that if for example a 1879 * write-lock never takes any other locks, then the reads are 1880 * equivalent to a NOP. 1881 */ 1882 if (next->read == 2 || prev->read == 2) 1883 return 1; 1884 /* 1885 * Is the <prev> -> <next> dependency already present? 1886 * 1887 * (this may occur even though this is a new chain: consider 1888 * e.g. the L1 -> L2 -> L3 -> L4 and the L5 -> L1 -> L2 -> L3 1889 * chains - the second one will be new, but L1 already has 1890 * L2 added to its dependency list, due to the first chain.) 1891 */ 1892 list_for_each_entry(entry, &hlock_class(prev)->locks_after, entry) { 1893 if (entry->class == hlock_class(next)) { 1894 if (distance == 1) 1895 entry->distance = 1; 1896 return 1; 1897 } 1898 } 1899 1900 /* 1901 * Is the <prev> -> <next> link redundant? 1902 */ 1903 this.class = hlock_class(prev); 1904 this.parent = NULL; 1905 ret = check_redundant(&this, hlock_class(next), &target_entry); 1906 if (!ret) { 1907 debug_atomic_inc(nr_redundant); 1908 return 2; 1909 } 1910 if (ret < 0) 1911 return print_bfs_bug(ret); 1912 1913 1914 if (!trace->entries && !save(trace)) 1915 return 0; 1916 1917 /* 1918 * Ok, all validations passed, add the new lock 1919 * to the previous lock's dependency list: 1920 */ 1921 ret = add_lock_to_list(hlock_class(next), 1922 &hlock_class(prev)->locks_after, 1923 next->acquire_ip, distance, trace); 1924 1925 if (!ret) 1926 return 0; 1927 1928 ret = add_lock_to_list(hlock_class(prev), 1929 &hlock_class(next)->locks_before, 1930 next->acquire_ip, distance, trace); 1931 if (!ret) 1932 return 0; 1933 1934 return 2; 1935 } 1936 1937 /* 1938 * Add the dependency to all directly-previous locks that are 'relevant'. 1939 * The ones that are relevant are (in increasing distance from curr): 1940 * all consecutive trylock entries and the final non-trylock entry - or 1941 * the end of this context's lock-chain - whichever comes first. 1942 */ 1943 static int 1944 check_prevs_add(struct task_struct *curr, struct held_lock *next) 1945 { 1946 int depth = curr->lockdep_depth; 1947 struct held_lock *hlock; 1948 struct stack_trace trace = { 1949 .nr_entries = 0, 1950 .max_entries = 0, 1951 .entries = NULL, 1952 .skip = 0, 1953 }; 1954 1955 /* 1956 * Debugging checks. 1957 * 1958 * Depth must not be zero for a non-head lock: 1959 */ 1960 if (!depth) 1961 goto out_bug; 1962 /* 1963 * At least two relevant locks must exist for this 1964 * to be a head: 1965 */ 1966 if (curr->held_locks[depth].irq_context != 1967 curr->held_locks[depth-1].irq_context) 1968 goto out_bug; 1969 1970 for (;;) { 1971 int distance = curr->lockdep_depth - depth + 1; 1972 hlock = curr->held_locks + depth - 1; 1973 1974 /* 1975 * Only non-recursive-read entries get new dependencies 1976 * added: 1977 */ 1978 if (hlock->read != 2 && hlock->check) { 1979 int ret = check_prev_add(curr, hlock, next, distance, &trace, save_trace); 1980 if (!ret) 1981 return 0; 1982 1983 /* 1984 * Stop after the first non-trylock entry, 1985 * as non-trylock entries have added their 1986 * own direct dependencies already, so this 1987 * lock is connected to them indirectly: 1988 */ 1989 if (!hlock->trylock) 1990 break; 1991 } 1992 1993 depth--; 1994 /* 1995 * End of lock-stack? 1996 */ 1997 if (!depth) 1998 break; 1999 /* 2000 * Stop the search if we cross into another context: 2001 */ 2002 if (curr->held_locks[depth].irq_context != 2003 curr->held_locks[depth-1].irq_context) 2004 break; 2005 } 2006 return 1; 2007 out_bug: 2008 if (!debug_locks_off_graph_unlock()) 2009 return 0; 2010 2011 /* 2012 * Clearly we all shouldn't be here, but since we made it we 2013 * can reliable say we messed up our state. See the above two 2014 * gotos for reasons why we could possibly end up here. 2015 */ 2016 WARN_ON(1); 2017 2018 return 0; 2019 } 2020 2021 unsigned long nr_lock_chains; 2022 struct lock_chain lock_chains[MAX_LOCKDEP_CHAINS]; 2023 int nr_chain_hlocks; 2024 static u16 chain_hlocks[MAX_LOCKDEP_CHAIN_HLOCKS]; 2025 2026 struct lock_class *lock_chain_get_class(struct lock_chain *chain, int i) 2027 { 2028 return lock_classes + chain_hlocks[chain->base + i]; 2029 } 2030 2031 /* 2032 * Returns the index of the first held_lock of the current chain 2033 */ 2034 static inline int get_first_held_lock(struct task_struct *curr, 2035 struct held_lock *hlock) 2036 { 2037 int i; 2038 struct held_lock *hlock_curr; 2039 2040 for (i = curr->lockdep_depth - 1; i >= 0; i--) { 2041 hlock_curr = curr->held_locks + i; 2042 if (hlock_curr->irq_context != hlock->irq_context) 2043 break; 2044 2045 } 2046 2047 return ++i; 2048 } 2049 2050 #ifdef CONFIG_DEBUG_LOCKDEP 2051 /* 2052 * Returns the next chain_key iteration 2053 */ 2054 static u64 print_chain_key_iteration(int class_idx, u64 chain_key) 2055 { 2056 u64 new_chain_key = iterate_chain_key(chain_key, class_idx); 2057 2058 printk(" class_idx:%d -> chain_key:%016Lx", 2059 class_idx, 2060 (unsigned long long)new_chain_key); 2061 return new_chain_key; 2062 } 2063 2064 static void 2065 print_chain_keys_held_locks(struct task_struct *curr, struct held_lock *hlock_next) 2066 { 2067 struct held_lock *hlock; 2068 u64 chain_key = 0; 2069 int depth = curr->lockdep_depth; 2070 int i; 2071 2072 printk("depth: %u\n", depth + 1); 2073 for (i = get_first_held_lock(curr, hlock_next); i < depth; i++) { 2074 hlock = curr->held_locks + i; 2075 chain_key = print_chain_key_iteration(hlock->class_idx, chain_key); 2076 2077 print_lock(hlock); 2078 } 2079 2080 print_chain_key_iteration(hlock_next->class_idx, chain_key); 2081 print_lock(hlock_next); 2082 } 2083 2084 static void print_chain_keys_chain(struct lock_chain *chain) 2085 { 2086 int i; 2087 u64 chain_key = 0; 2088 int class_id; 2089 2090 printk("depth: %u\n", chain->depth); 2091 for (i = 0; i < chain->depth; i++) { 2092 class_id = chain_hlocks[chain->base + i]; 2093 chain_key = print_chain_key_iteration(class_id + 1, chain_key); 2094 2095 print_lock_name(lock_classes + class_id); 2096 printk("\n"); 2097 } 2098 } 2099 2100 static void print_collision(struct task_struct *curr, 2101 struct held_lock *hlock_next, 2102 struct lock_chain *chain) 2103 { 2104 pr_warn("\n"); 2105 pr_warn("============================\n"); 2106 pr_warn("WARNING: chain_key collision\n"); 2107 print_kernel_ident(); 2108 pr_warn("----------------------------\n"); 2109 pr_warn("%s/%d: ", current->comm, task_pid_nr(current)); 2110 pr_warn("Hash chain already cached but the contents don't match!\n"); 2111 2112 pr_warn("Held locks:"); 2113 print_chain_keys_held_locks(curr, hlock_next); 2114 2115 pr_warn("Locks in cached chain:"); 2116 print_chain_keys_chain(chain); 2117 2118 pr_warn("\nstack backtrace:\n"); 2119 dump_stack(); 2120 } 2121 #endif 2122 2123 /* 2124 * Checks whether the chain and the current held locks are consistent 2125 * in depth and also in content. If they are not it most likely means 2126 * that there was a collision during the calculation of the chain_key. 2127 * Returns: 0 not passed, 1 passed 2128 */ 2129 static int check_no_collision(struct task_struct *curr, 2130 struct held_lock *hlock, 2131 struct lock_chain *chain) 2132 { 2133 #ifdef CONFIG_DEBUG_LOCKDEP 2134 int i, j, id; 2135 2136 i = get_first_held_lock(curr, hlock); 2137 2138 if (DEBUG_LOCKS_WARN_ON(chain->depth != curr->lockdep_depth - (i - 1))) { 2139 print_collision(curr, hlock, chain); 2140 return 0; 2141 } 2142 2143 for (j = 0; j < chain->depth - 1; j++, i++) { 2144 id = curr->held_locks[i].class_idx - 1; 2145 2146 if (DEBUG_LOCKS_WARN_ON(chain_hlocks[chain->base + j] != id)) { 2147 print_collision(curr, hlock, chain); 2148 return 0; 2149 } 2150 } 2151 #endif 2152 return 1; 2153 } 2154 2155 /* 2156 * Adds a dependency chain into chain hashtable. And must be called with 2157 * graph_lock held. 2158 * 2159 * Return 0 if fail, and graph_lock is released. 2160 * Return 1 if succeed, with graph_lock held. 2161 */ 2162 static inline int add_chain_cache(struct task_struct *curr, 2163 struct held_lock *hlock, 2164 u64 chain_key) 2165 { 2166 struct lock_class *class = hlock_class(hlock); 2167 struct hlist_head *hash_head = chainhashentry(chain_key); 2168 struct lock_chain *chain; 2169 int i, j; 2170 2171 /* 2172 * Allocate a new chain entry from the static array, and add 2173 * it to the hash: 2174 */ 2175 2176 /* 2177 * We might need to take the graph lock, ensure we've got IRQs 2178 * disabled to make this an IRQ-safe lock.. for recursion reasons 2179 * lockdep won't complain about its own locking errors. 2180 */ 2181 if (DEBUG_LOCKS_WARN_ON(!irqs_disabled())) 2182 return 0; 2183 2184 if (unlikely(nr_lock_chains >= MAX_LOCKDEP_CHAINS)) { 2185 if (!debug_locks_off_graph_unlock()) 2186 return 0; 2187 2188 print_lockdep_off("BUG: MAX_LOCKDEP_CHAINS too low!"); 2189 dump_stack(); 2190 return 0; 2191 } 2192 chain = lock_chains + nr_lock_chains++; 2193 chain->chain_key = chain_key; 2194 chain->irq_context = hlock->irq_context; 2195 i = get_first_held_lock(curr, hlock); 2196 chain->depth = curr->lockdep_depth + 1 - i; 2197 2198 BUILD_BUG_ON((1UL << 24) <= ARRAY_SIZE(chain_hlocks)); 2199 BUILD_BUG_ON((1UL << 6) <= ARRAY_SIZE(curr->held_locks)); 2200 BUILD_BUG_ON((1UL << 8*sizeof(chain_hlocks[0])) <= ARRAY_SIZE(lock_classes)); 2201 2202 if (likely(nr_chain_hlocks + chain->depth <= MAX_LOCKDEP_CHAIN_HLOCKS)) { 2203 chain->base = nr_chain_hlocks; 2204 for (j = 0; j < chain->depth - 1; j++, i++) { 2205 int lock_id = curr->held_locks[i].class_idx - 1; 2206 chain_hlocks[chain->base + j] = lock_id; 2207 } 2208 chain_hlocks[chain->base + j] = class - lock_classes; 2209 } 2210 2211 if (nr_chain_hlocks < MAX_LOCKDEP_CHAIN_HLOCKS) 2212 nr_chain_hlocks += chain->depth; 2213 2214 #ifdef CONFIG_DEBUG_LOCKDEP 2215 /* 2216 * Important for check_no_collision(). 2217 */ 2218 if (unlikely(nr_chain_hlocks > MAX_LOCKDEP_CHAIN_HLOCKS)) { 2219 if (!debug_locks_off_graph_unlock()) 2220 return 0; 2221 2222 print_lockdep_off("BUG: MAX_LOCKDEP_CHAIN_HLOCKS too low!"); 2223 dump_stack(); 2224 return 0; 2225 } 2226 #endif 2227 2228 hlist_add_head_rcu(&chain->entry, hash_head); 2229 debug_atomic_inc(chain_lookup_misses); 2230 inc_chains(); 2231 2232 return 1; 2233 } 2234 2235 /* 2236 * Look up a dependency chain. 2237 */ 2238 static inline struct lock_chain *lookup_chain_cache(u64 chain_key) 2239 { 2240 struct hlist_head *hash_head = chainhashentry(chain_key); 2241 struct lock_chain *chain; 2242 2243 /* 2244 * We can walk it lock-free, because entries only get added 2245 * to the hash: 2246 */ 2247 hlist_for_each_entry_rcu(chain, hash_head, entry) { 2248 if (chain->chain_key == chain_key) { 2249 debug_atomic_inc(chain_lookup_hits); 2250 return chain; 2251 } 2252 } 2253 return NULL; 2254 } 2255 2256 /* 2257 * If the key is not present yet in dependency chain cache then 2258 * add it and return 1 - in this case the new dependency chain is 2259 * validated. If the key is already hashed, return 0. 2260 * (On return with 1 graph_lock is held.) 2261 */ 2262 static inline int lookup_chain_cache_add(struct task_struct *curr, 2263 struct held_lock *hlock, 2264 u64 chain_key) 2265 { 2266 struct lock_class *class = hlock_class(hlock); 2267 struct lock_chain *chain = lookup_chain_cache(chain_key); 2268 2269 if (chain) { 2270 cache_hit: 2271 if (!check_no_collision(curr, hlock, chain)) 2272 return 0; 2273 2274 if (very_verbose(class)) { 2275 printk("\nhash chain already cached, key: " 2276 "%016Lx tail class: [%px] %s\n", 2277 (unsigned long long)chain_key, 2278 class->key, class->name); 2279 } 2280 2281 return 0; 2282 } 2283 2284 if (very_verbose(class)) { 2285 printk("\nnew hash chain, key: %016Lx tail class: [%px] %s\n", 2286 (unsigned long long)chain_key, class->key, class->name); 2287 } 2288 2289 if (!graph_lock()) 2290 return 0; 2291 2292 /* 2293 * We have to walk the chain again locked - to avoid duplicates: 2294 */ 2295 chain = lookup_chain_cache(chain_key); 2296 if (chain) { 2297 graph_unlock(); 2298 goto cache_hit; 2299 } 2300 2301 if (!add_chain_cache(curr, hlock, chain_key)) 2302 return 0; 2303 2304 return 1; 2305 } 2306 2307 static int validate_chain(struct task_struct *curr, struct lockdep_map *lock, 2308 struct held_lock *hlock, int chain_head, u64 chain_key) 2309 { 2310 /* 2311 * Trylock needs to maintain the stack of held locks, but it 2312 * does not add new dependencies, because trylock can be done 2313 * in any order. 2314 * 2315 * We look up the chain_key and do the O(N^2) check and update of 2316 * the dependencies only if this is a new dependency chain. 2317 * (If lookup_chain_cache_add() return with 1 it acquires 2318 * graph_lock for us) 2319 */ 2320 if (!hlock->trylock && hlock->check && 2321 lookup_chain_cache_add(curr, hlock, chain_key)) { 2322 /* 2323 * Check whether last held lock: 2324 * 2325 * - is irq-safe, if this lock is irq-unsafe 2326 * - is softirq-safe, if this lock is hardirq-unsafe 2327 * 2328 * And check whether the new lock's dependency graph 2329 * could lead back to the previous lock. 2330 * 2331 * any of these scenarios could lead to a deadlock. If 2332 * All validations 2333 */ 2334 int ret = check_deadlock(curr, hlock, lock, hlock->read); 2335 2336 if (!ret) 2337 return 0; 2338 /* 2339 * Mark recursive read, as we jump over it when 2340 * building dependencies (just like we jump over 2341 * trylock entries): 2342 */ 2343 if (ret == 2) 2344 hlock->read = 2; 2345 /* 2346 * Add dependency only if this lock is not the head 2347 * of the chain, and if it's not a secondary read-lock: 2348 */ 2349 if (!chain_head && ret != 2) { 2350 if (!check_prevs_add(curr, hlock)) 2351 return 0; 2352 } 2353 2354 graph_unlock(); 2355 } else { 2356 /* after lookup_chain_cache_add(): */ 2357 if (unlikely(!debug_locks)) 2358 return 0; 2359 } 2360 2361 return 1; 2362 } 2363 #else 2364 static inline int validate_chain(struct task_struct *curr, 2365 struct lockdep_map *lock, struct held_lock *hlock, 2366 int chain_head, u64 chain_key) 2367 { 2368 return 1; 2369 } 2370 #endif 2371 2372 /* 2373 * We are building curr_chain_key incrementally, so double-check 2374 * it from scratch, to make sure that it's done correctly: 2375 */ 2376 static void check_chain_key(struct task_struct *curr) 2377 { 2378 #ifdef CONFIG_DEBUG_LOCKDEP 2379 struct held_lock *hlock, *prev_hlock = NULL; 2380 unsigned int i; 2381 u64 chain_key = 0; 2382 2383 for (i = 0; i < curr->lockdep_depth; i++) { 2384 hlock = curr->held_locks + i; 2385 if (chain_key != hlock->prev_chain_key) { 2386 debug_locks_off(); 2387 /* 2388 * We got mighty confused, our chain keys don't match 2389 * with what we expect, someone trample on our task state? 2390 */ 2391 WARN(1, "hm#1, depth: %u [%u], %016Lx != %016Lx\n", 2392 curr->lockdep_depth, i, 2393 (unsigned long long)chain_key, 2394 (unsigned long long)hlock->prev_chain_key); 2395 return; 2396 } 2397 /* 2398 * Whoops ran out of static storage again? 2399 */ 2400 if (DEBUG_LOCKS_WARN_ON(hlock->class_idx > MAX_LOCKDEP_KEYS)) 2401 return; 2402 2403 if (prev_hlock && (prev_hlock->irq_context != 2404 hlock->irq_context)) 2405 chain_key = 0; 2406 chain_key = iterate_chain_key(chain_key, hlock->class_idx); 2407 prev_hlock = hlock; 2408 } 2409 if (chain_key != curr->curr_chain_key) { 2410 debug_locks_off(); 2411 /* 2412 * More smoking hash instead of calculating it, damn see these 2413 * numbers float.. I bet that a pink elephant stepped on my memory. 2414 */ 2415 WARN(1, "hm#2, depth: %u [%u], %016Lx != %016Lx\n", 2416 curr->lockdep_depth, i, 2417 (unsigned long long)chain_key, 2418 (unsigned long long)curr->curr_chain_key); 2419 } 2420 #endif 2421 } 2422 2423 static void 2424 print_usage_bug_scenario(struct held_lock *lock) 2425 { 2426 struct lock_class *class = hlock_class(lock); 2427 2428 printk(" Possible unsafe locking scenario:\n\n"); 2429 printk(" CPU0\n"); 2430 printk(" ----\n"); 2431 printk(" lock("); 2432 __print_lock_name(class); 2433 printk(KERN_CONT ");\n"); 2434 printk(" <Interrupt>\n"); 2435 printk(" lock("); 2436 __print_lock_name(class); 2437 printk(KERN_CONT ");\n"); 2438 printk("\n *** DEADLOCK ***\n\n"); 2439 } 2440 2441 static int 2442 print_usage_bug(struct task_struct *curr, struct held_lock *this, 2443 enum lock_usage_bit prev_bit, enum lock_usage_bit new_bit) 2444 { 2445 if (!debug_locks_off_graph_unlock() || debug_locks_silent) 2446 return 0; 2447 2448 pr_warn("\n"); 2449 pr_warn("================================\n"); 2450 pr_warn("WARNING: inconsistent lock state\n"); 2451 print_kernel_ident(); 2452 pr_warn("--------------------------------\n"); 2453 2454 pr_warn("inconsistent {%s} -> {%s} usage.\n", 2455 usage_str[prev_bit], usage_str[new_bit]); 2456 2457 pr_warn("%s/%d [HC%u[%lu]:SC%u[%lu]:HE%u:SE%u] takes:\n", 2458 curr->comm, task_pid_nr(curr), 2459 trace_hardirq_context(curr), hardirq_count() >> HARDIRQ_SHIFT, 2460 trace_softirq_context(curr), softirq_count() >> SOFTIRQ_SHIFT, 2461 trace_hardirqs_enabled(curr), 2462 trace_softirqs_enabled(curr)); 2463 print_lock(this); 2464 2465 pr_warn("{%s} state was registered at:\n", usage_str[prev_bit]); 2466 print_stack_trace(hlock_class(this)->usage_traces + prev_bit, 1); 2467 2468 print_irqtrace_events(curr); 2469 pr_warn("\nother info that might help us debug this:\n"); 2470 print_usage_bug_scenario(this); 2471 2472 lockdep_print_held_locks(curr); 2473 2474 pr_warn("\nstack backtrace:\n"); 2475 dump_stack(); 2476 2477 return 0; 2478 } 2479 2480 /* 2481 * Print out an error if an invalid bit is set: 2482 */ 2483 static inline int 2484 valid_state(struct task_struct *curr, struct held_lock *this, 2485 enum lock_usage_bit new_bit, enum lock_usage_bit bad_bit) 2486 { 2487 if (unlikely(hlock_class(this)->usage_mask & (1 << bad_bit))) 2488 return print_usage_bug(curr, this, bad_bit, new_bit); 2489 return 1; 2490 } 2491 2492 static int mark_lock(struct task_struct *curr, struct held_lock *this, 2493 enum lock_usage_bit new_bit); 2494 2495 #if defined(CONFIG_TRACE_IRQFLAGS) && defined(CONFIG_PROVE_LOCKING) 2496 2497 /* 2498 * print irq inversion bug: 2499 */ 2500 static int 2501 print_irq_inversion_bug(struct task_struct *curr, 2502 struct lock_list *root, struct lock_list *other, 2503 struct held_lock *this, int forwards, 2504 const char *irqclass) 2505 { 2506 struct lock_list *entry = other; 2507 struct lock_list *middle = NULL; 2508 int depth; 2509 2510 if (!debug_locks_off_graph_unlock() || debug_locks_silent) 2511 return 0; 2512 2513 pr_warn("\n"); 2514 pr_warn("========================================================\n"); 2515 pr_warn("WARNING: possible irq lock inversion dependency detected\n"); 2516 print_kernel_ident(); 2517 pr_warn("--------------------------------------------------------\n"); 2518 pr_warn("%s/%d just changed the state of lock:\n", 2519 curr->comm, task_pid_nr(curr)); 2520 print_lock(this); 2521 if (forwards) 2522 pr_warn("but this lock took another, %s-unsafe lock in the past:\n", irqclass); 2523 else 2524 pr_warn("but this lock was taken by another, %s-safe lock in the past:\n", irqclass); 2525 print_lock_name(other->class); 2526 pr_warn("\n\nand interrupts could create inverse lock ordering between them.\n\n"); 2527 2528 pr_warn("\nother info that might help us debug this:\n"); 2529 2530 /* Find a middle lock (if one exists) */ 2531 depth = get_lock_depth(other); 2532 do { 2533 if (depth == 0 && (entry != root)) { 2534 pr_warn("lockdep:%s bad path found in chain graph\n", __func__); 2535 break; 2536 } 2537 middle = entry; 2538 entry = get_lock_parent(entry); 2539 depth--; 2540 } while (entry && entry != root && (depth >= 0)); 2541 if (forwards) 2542 print_irq_lock_scenario(root, other, 2543 middle ? middle->class : root->class, other->class); 2544 else 2545 print_irq_lock_scenario(other, root, 2546 middle ? middle->class : other->class, root->class); 2547 2548 lockdep_print_held_locks(curr); 2549 2550 pr_warn("\nthe shortest dependencies between 2nd lock and 1st lock:\n"); 2551 if (!save_trace(&root->trace)) 2552 return 0; 2553 print_shortest_lock_dependencies(other, root); 2554 2555 pr_warn("\nstack backtrace:\n"); 2556 dump_stack(); 2557 2558 return 0; 2559 } 2560 2561 /* 2562 * Prove that in the forwards-direction subgraph starting at <this> 2563 * there is no lock matching <mask>: 2564 */ 2565 static int 2566 check_usage_forwards(struct task_struct *curr, struct held_lock *this, 2567 enum lock_usage_bit bit, const char *irqclass) 2568 { 2569 int ret; 2570 struct lock_list root; 2571 struct lock_list *uninitialized_var(target_entry); 2572 2573 root.parent = NULL; 2574 root.class = hlock_class(this); 2575 ret = find_usage_forwards(&root, bit, &target_entry); 2576 if (ret < 0) 2577 return print_bfs_bug(ret); 2578 if (ret == 1) 2579 return ret; 2580 2581 return print_irq_inversion_bug(curr, &root, target_entry, 2582 this, 1, irqclass); 2583 } 2584 2585 /* 2586 * Prove that in the backwards-direction subgraph starting at <this> 2587 * there is no lock matching <mask>: 2588 */ 2589 static int 2590 check_usage_backwards(struct task_struct *curr, struct held_lock *this, 2591 enum lock_usage_bit bit, const char *irqclass) 2592 { 2593 int ret; 2594 struct lock_list root; 2595 struct lock_list *uninitialized_var(target_entry); 2596 2597 root.parent = NULL; 2598 root.class = hlock_class(this); 2599 ret = find_usage_backwards(&root, bit, &target_entry); 2600 if (ret < 0) 2601 return print_bfs_bug(ret); 2602 if (ret == 1) 2603 return ret; 2604 2605 return print_irq_inversion_bug(curr, &root, target_entry, 2606 this, 0, irqclass); 2607 } 2608 2609 void print_irqtrace_events(struct task_struct *curr) 2610 { 2611 printk("irq event stamp: %u\n", curr->irq_events); 2612 printk("hardirqs last enabled at (%u): [<%px>] %pS\n", 2613 curr->hardirq_enable_event, (void *)curr->hardirq_enable_ip, 2614 (void *)curr->hardirq_enable_ip); 2615 printk("hardirqs last disabled at (%u): [<%px>] %pS\n", 2616 curr->hardirq_disable_event, (void *)curr->hardirq_disable_ip, 2617 (void *)curr->hardirq_disable_ip); 2618 printk("softirqs last enabled at (%u): [<%px>] %pS\n", 2619 curr->softirq_enable_event, (void *)curr->softirq_enable_ip, 2620 (void *)curr->softirq_enable_ip); 2621 printk("softirqs last disabled at (%u): [<%px>] %pS\n", 2622 curr->softirq_disable_event, (void *)curr->softirq_disable_ip, 2623 (void *)curr->softirq_disable_ip); 2624 } 2625 2626 static int HARDIRQ_verbose(struct lock_class *class) 2627 { 2628 #if HARDIRQ_VERBOSE 2629 return class_filter(class); 2630 #endif 2631 return 0; 2632 } 2633 2634 static int SOFTIRQ_verbose(struct lock_class *class) 2635 { 2636 #if SOFTIRQ_VERBOSE 2637 return class_filter(class); 2638 #endif 2639 return 0; 2640 } 2641 2642 #define STRICT_READ_CHECKS 1 2643 2644 static int (*state_verbose_f[])(struct lock_class *class) = { 2645 #define LOCKDEP_STATE(__STATE) \ 2646 __STATE##_verbose, 2647 #include "lockdep_states.h" 2648 #undef LOCKDEP_STATE 2649 }; 2650 2651 static inline int state_verbose(enum lock_usage_bit bit, 2652 struct lock_class *class) 2653 { 2654 return state_verbose_f[bit >> 2](class); 2655 } 2656 2657 typedef int (*check_usage_f)(struct task_struct *, struct held_lock *, 2658 enum lock_usage_bit bit, const char *name); 2659 2660 static int 2661 mark_lock_irq(struct task_struct *curr, struct held_lock *this, 2662 enum lock_usage_bit new_bit) 2663 { 2664 int excl_bit = exclusive_bit(new_bit); 2665 int read = new_bit & 1; 2666 int dir = new_bit & 2; 2667 2668 /* 2669 * mark USED_IN has to look forwards -- to ensure no dependency 2670 * has ENABLED state, which would allow recursion deadlocks. 2671 * 2672 * mark ENABLED has to look backwards -- to ensure no dependee 2673 * has USED_IN state, which, again, would allow recursion deadlocks. 2674 */ 2675 check_usage_f usage = dir ? 2676 check_usage_backwards : check_usage_forwards; 2677 2678 /* 2679 * Validate that this particular lock does not have conflicting 2680 * usage states. 2681 */ 2682 if (!valid_state(curr, this, new_bit, excl_bit)) 2683 return 0; 2684 2685 /* 2686 * Validate that the lock dependencies don't have conflicting usage 2687 * states. 2688 */ 2689 if ((!read || !dir || STRICT_READ_CHECKS) && 2690 !usage(curr, this, excl_bit, state_name(new_bit & ~1))) 2691 return 0; 2692 2693 /* 2694 * Check for read in write conflicts 2695 */ 2696 if (!read) { 2697 if (!valid_state(curr, this, new_bit, excl_bit + 1)) 2698 return 0; 2699 2700 if (STRICT_READ_CHECKS && 2701 !usage(curr, this, excl_bit + 1, 2702 state_name(new_bit + 1))) 2703 return 0; 2704 } 2705 2706 if (state_verbose(new_bit, hlock_class(this))) 2707 return 2; 2708 2709 return 1; 2710 } 2711 2712 enum mark_type { 2713 #define LOCKDEP_STATE(__STATE) __STATE, 2714 #include "lockdep_states.h" 2715 #undef LOCKDEP_STATE 2716 }; 2717 2718 /* 2719 * Mark all held locks with a usage bit: 2720 */ 2721 static int 2722 mark_held_locks(struct task_struct *curr, enum mark_type mark) 2723 { 2724 enum lock_usage_bit usage_bit; 2725 struct held_lock *hlock; 2726 int i; 2727 2728 for (i = 0; i < curr->lockdep_depth; i++) { 2729 hlock = curr->held_locks + i; 2730 2731 usage_bit = 2 + (mark << 2); /* ENABLED */ 2732 if (hlock->read) 2733 usage_bit += 1; /* READ */ 2734 2735 BUG_ON(usage_bit >= LOCK_USAGE_STATES); 2736 2737 if (!hlock->check) 2738 continue; 2739 2740 if (!mark_lock(curr, hlock, usage_bit)) 2741 return 0; 2742 } 2743 2744 return 1; 2745 } 2746 2747 /* 2748 * Hardirqs will be enabled: 2749 */ 2750 static void __trace_hardirqs_on_caller(unsigned long ip) 2751 { 2752 struct task_struct *curr = current; 2753 2754 /* we'll do an OFF -> ON transition: */ 2755 curr->hardirqs_enabled = 1; 2756 2757 /* 2758 * We are going to turn hardirqs on, so set the 2759 * usage bit for all held locks: 2760 */ 2761 if (!mark_held_locks(curr, HARDIRQ)) 2762 return; 2763 /* 2764 * If we have softirqs enabled, then set the usage 2765 * bit for all held locks. (disabled hardirqs prevented 2766 * this bit from being set before) 2767 */ 2768 if (curr->softirqs_enabled) 2769 if (!mark_held_locks(curr, SOFTIRQ)) 2770 return; 2771 2772 curr->hardirq_enable_ip = ip; 2773 curr->hardirq_enable_event = ++curr->irq_events; 2774 debug_atomic_inc(hardirqs_on_events); 2775 } 2776 2777 void lockdep_hardirqs_on(unsigned long ip) 2778 { 2779 if (unlikely(!debug_locks || current->lockdep_recursion)) 2780 return; 2781 2782 if (unlikely(current->hardirqs_enabled)) { 2783 /* 2784 * Neither irq nor preemption are disabled here 2785 * so this is racy by nature but losing one hit 2786 * in a stat is not a big deal. 2787 */ 2788 __debug_atomic_inc(redundant_hardirqs_on); 2789 return; 2790 } 2791 2792 /* 2793 * We're enabling irqs and according to our state above irqs weren't 2794 * already enabled, yet we find the hardware thinks they are in fact 2795 * enabled.. someone messed up their IRQ state tracing. 2796 */ 2797 if (DEBUG_LOCKS_WARN_ON(!irqs_disabled())) 2798 return; 2799 2800 /* 2801 * See the fine text that goes along with this variable definition. 2802 */ 2803 if (DEBUG_LOCKS_WARN_ON(unlikely(early_boot_irqs_disabled))) 2804 return; 2805 2806 /* 2807 * Can't allow enabling interrupts while in an interrupt handler, 2808 * that's general bad form and such. Recursion, limited stack etc.. 2809 */ 2810 if (DEBUG_LOCKS_WARN_ON(current->hardirq_context)) 2811 return; 2812 2813 current->lockdep_recursion = 1; 2814 __trace_hardirqs_on_caller(ip); 2815 current->lockdep_recursion = 0; 2816 } 2817 2818 /* 2819 * Hardirqs were disabled: 2820 */ 2821 void lockdep_hardirqs_off(unsigned long ip) 2822 { 2823 struct task_struct *curr = current; 2824 2825 if (unlikely(!debug_locks || current->lockdep_recursion)) 2826 return; 2827 2828 /* 2829 * So we're supposed to get called after you mask local IRQs, but for 2830 * some reason the hardware doesn't quite think you did a proper job. 2831 */ 2832 if (DEBUG_LOCKS_WARN_ON(!irqs_disabled())) 2833 return; 2834 2835 if (curr->hardirqs_enabled) { 2836 /* 2837 * We have done an ON -> OFF transition: 2838 */ 2839 curr->hardirqs_enabled = 0; 2840 curr->hardirq_disable_ip = ip; 2841 curr->hardirq_disable_event = ++curr->irq_events; 2842 debug_atomic_inc(hardirqs_off_events); 2843 } else 2844 debug_atomic_inc(redundant_hardirqs_off); 2845 } 2846 2847 /* 2848 * Softirqs will be enabled: 2849 */ 2850 void trace_softirqs_on(unsigned long ip) 2851 { 2852 struct task_struct *curr = current; 2853 2854 if (unlikely(!debug_locks || current->lockdep_recursion)) 2855 return; 2856 2857 /* 2858 * We fancy IRQs being disabled here, see softirq.c, avoids 2859 * funny state and nesting things. 2860 */ 2861 if (DEBUG_LOCKS_WARN_ON(!irqs_disabled())) 2862 return; 2863 2864 if (curr->softirqs_enabled) { 2865 debug_atomic_inc(redundant_softirqs_on); 2866 return; 2867 } 2868 2869 current->lockdep_recursion = 1; 2870 /* 2871 * We'll do an OFF -> ON transition: 2872 */ 2873 curr->softirqs_enabled = 1; 2874 curr->softirq_enable_ip = ip; 2875 curr->softirq_enable_event = ++curr->irq_events; 2876 debug_atomic_inc(softirqs_on_events); 2877 /* 2878 * We are going to turn softirqs on, so set the 2879 * usage bit for all held locks, if hardirqs are 2880 * enabled too: 2881 */ 2882 if (curr->hardirqs_enabled) 2883 mark_held_locks(curr, SOFTIRQ); 2884 current->lockdep_recursion = 0; 2885 } 2886 2887 /* 2888 * Softirqs were disabled: 2889 */ 2890 void trace_softirqs_off(unsigned long ip) 2891 { 2892 struct task_struct *curr = current; 2893 2894 if (unlikely(!debug_locks || current->lockdep_recursion)) 2895 return; 2896 2897 /* 2898 * We fancy IRQs being disabled here, see softirq.c 2899 */ 2900 if (DEBUG_LOCKS_WARN_ON(!irqs_disabled())) 2901 return; 2902 2903 if (curr->softirqs_enabled) { 2904 /* 2905 * We have done an ON -> OFF transition: 2906 */ 2907 curr->softirqs_enabled = 0; 2908 curr->softirq_disable_ip = ip; 2909 curr->softirq_disable_event = ++curr->irq_events; 2910 debug_atomic_inc(softirqs_off_events); 2911 /* 2912 * Whoops, we wanted softirqs off, so why aren't they? 2913 */ 2914 DEBUG_LOCKS_WARN_ON(!softirq_count()); 2915 } else 2916 debug_atomic_inc(redundant_softirqs_off); 2917 } 2918 2919 static int mark_irqflags(struct task_struct *curr, struct held_lock *hlock) 2920 { 2921 /* 2922 * If non-trylock use in a hardirq or softirq context, then 2923 * mark the lock as used in these contexts: 2924 */ 2925 if (!hlock->trylock) { 2926 if (hlock->read) { 2927 if (curr->hardirq_context) 2928 if (!mark_lock(curr, hlock, 2929 LOCK_USED_IN_HARDIRQ_READ)) 2930 return 0; 2931 if (curr->softirq_context) 2932 if (!mark_lock(curr, hlock, 2933 LOCK_USED_IN_SOFTIRQ_READ)) 2934 return 0; 2935 } else { 2936 if (curr->hardirq_context) 2937 if (!mark_lock(curr, hlock, LOCK_USED_IN_HARDIRQ)) 2938 return 0; 2939 if (curr->softirq_context) 2940 if (!mark_lock(curr, hlock, LOCK_USED_IN_SOFTIRQ)) 2941 return 0; 2942 } 2943 } 2944 if (!hlock->hardirqs_off) { 2945 if (hlock->read) { 2946 if (!mark_lock(curr, hlock, 2947 LOCK_ENABLED_HARDIRQ_READ)) 2948 return 0; 2949 if (curr->softirqs_enabled) 2950 if (!mark_lock(curr, hlock, 2951 LOCK_ENABLED_SOFTIRQ_READ)) 2952 return 0; 2953 } else { 2954 if (!mark_lock(curr, hlock, 2955 LOCK_ENABLED_HARDIRQ)) 2956 return 0; 2957 if (curr->softirqs_enabled) 2958 if (!mark_lock(curr, hlock, 2959 LOCK_ENABLED_SOFTIRQ)) 2960 return 0; 2961 } 2962 } 2963 2964 return 1; 2965 } 2966 2967 static inline unsigned int task_irq_context(struct task_struct *task) 2968 { 2969 return 2 * !!task->hardirq_context + !!task->softirq_context; 2970 } 2971 2972 static int separate_irq_context(struct task_struct *curr, 2973 struct held_lock *hlock) 2974 { 2975 unsigned int depth = curr->lockdep_depth; 2976 2977 /* 2978 * Keep track of points where we cross into an interrupt context: 2979 */ 2980 if (depth) { 2981 struct held_lock *prev_hlock; 2982 2983 prev_hlock = curr->held_locks + depth-1; 2984 /* 2985 * If we cross into another context, reset the 2986 * hash key (this also prevents the checking and the 2987 * adding of the dependency to 'prev'): 2988 */ 2989 if (prev_hlock->irq_context != hlock->irq_context) 2990 return 1; 2991 } 2992 return 0; 2993 } 2994 2995 #else /* defined(CONFIG_TRACE_IRQFLAGS) && defined(CONFIG_PROVE_LOCKING) */ 2996 2997 static inline 2998 int mark_lock_irq(struct task_struct *curr, struct held_lock *this, 2999 enum lock_usage_bit new_bit) 3000 { 3001 WARN_ON(1); /* Impossible innit? when we don't have TRACE_IRQFLAG */ 3002 return 1; 3003 } 3004 3005 static inline int mark_irqflags(struct task_struct *curr, 3006 struct held_lock *hlock) 3007 { 3008 return 1; 3009 } 3010 3011 static inline unsigned int task_irq_context(struct task_struct *task) 3012 { 3013 return 0; 3014 } 3015 3016 static inline int separate_irq_context(struct task_struct *curr, 3017 struct held_lock *hlock) 3018 { 3019 return 0; 3020 } 3021 3022 #endif /* defined(CONFIG_TRACE_IRQFLAGS) && defined(CONFIG_PROVE_LOCKING) */ 3023 3024 /* 3025 * Mark a lock with a usage bit, and validate the state transition: 3026 */ 3027 static int mark_lock(struct task_struct *curr, struct held_lock *this, 3028 enum lock_usage_bit new_bit) 3029 { 3030 unsigned int new_mask = 1 << new_bit, ret = 1; 3031 3032 /* 3033 * If already set then do not dirty the cacheline, 3034 * nor do any checks: 3035 */ 3036 if (likely(hlock_class(this)->usage_mask & new_mask)) 3037 return 1; 3038 3039 if (!graph_lock()) 3040 return 0; 3041 /* 3042 * Make sure we didn't race: 3043 */ 3044 if (unlikely(hlock_class(this)->usage_mask & new_mask)) { 3045 graph_unlock(); 3046 return 1; 3047 } 3048 3049 hlock_class(this)->usage_mask |= new_mask; 3050 3051 if (!save_trace(hlock_class(this)->usage_traces + new_bit)) 3052 return 0; 3053 3054 switch (new_bit) { 3055 #define LOCKDEP_STATE(__STATE) \ 3056 case LOCK_USED_IN_##__STATE: \ 3057 case LOCK_USED_IN_##__STATE##_READ: \ 3058 case LOCK_ENABLED_##__STATE: \ 3059 case LOCK_ENABLED_##__STATE##_READ: 3060 #include "lockdep_states.h" 3061 #undef LOCKDEP_STATE 3062 ret = mark_lock_irq(curr, this, new_bit); 3063 if (!ret) 3064 return 0; 3065 break; 3066 case LOCK_USED: 3067 debug_atomic_dec(nr_unused_locks); 3068 break; 3069 default: 3070 if (!debug_locks_off_graph_unlock()) 3071 return 0; 3072 WARN_ON(1); 3073 return 0; 3074 } 3075 3076 graph_unlock(); 3077 3078 /* 3079 * We must printk outside of the graph_lock: 3080 */ 3081 if (ret == 2) { 3082 printk("\nmarked lock as {%s}:\n", usage_str[new_bit]); 3083 print_lock(this); 3084 print_irqtrace_events(curr); 3085 dump_stack(); 3086 } 3087 3088 return ret; 3089 } 3090 3091 /* 3092 * Initialize a lock instance's lock-class mapping info: 3093 */ 3094 void lockdep_init_map(struct lockdep_map *lock, const char *name, 3095 struct lock_class_key *key, int subclass) 3096 { 3097 int i; 3098 3099 for (i = 0; i < NR_LOCKDEP_CACHING_CLASSES; i++) 3100 lock->class_cache[i] = NULL; 3101 3102 #ifdef CONFIG_LOCK_STAT 3103 lock->cpu = raw_smp_processor_id(); 3104 #endif 3105 3106 /* 3107 * Can't be having no nameless bastards around this place! 3108 */ 3109 if (DEBUG_LOCKS_WARN_ON(!name)) { 3110 lock->name = "NULL"; 3111 return; 3112 } 3113 3114 lock->name = name; 3115 3116 /* 3117 * No key, no joy, we need to hash something. 3118 */ 3119 if (DEBUG_LOCKS_WARN_ON(!key)) 3120 return; 3121 /* 3122 * Sanity check, the lock-class key must be persistent: 3123 */ 3124 if (!static_obj(key)) { 3125 printk("BUG: key %px not in .data!\n", key); 3126 /* 3127 * What it says above ^^^^^, I suggest you read it. 3128 */ 3129 DEBUG_LOCKS_WARN_ON(1); 3130 return; 3131 } 3132 lock->key = key; 3133 3134 if (unlikely(!debug_locks)) 3135 return; 3136 3137 if (subclass) { 3138 unsigned long flags; 3139 3140 if (DEBUG_LOCKS_WARN_ON(current->lockdep_recursion)) 3141 return; 3142 3143 raw_local_irq_save(flags); 3144 current->lockdep_recursion = 1; 3145 register_lock_class(lock, subclass, 1); 3146 current->lockdep_recursion = 0; 3147 raw_local_irq_restore(flags); 3148 } 3149 } 3150 EXPORT_SYMBOL_GPL(lockdep_init_map); 3151 3152 struct lock_class_key __lockdep_no_validate__; 3153 EXPORT_SYMBOL_GPL(__lockdep_no_validate__); 3154 3155 static int 3156 print_lock_nested_lock_not_held(struct task_struct *curr, 3157 struct held_lock *hlock, 3158 unsigned long ip) 3159 { 3160 if (!debug_locks_off()) 3161 return 0; 3162 if (debug_locks_silent) 3163 return 0; 3164 3165 pr_warn("\n"); 3166 pr_warn("==================================\n"); 3167 pr_warn("WARNING: Nested lock was not taken\n"); 3168 print_kernel_ident(); 3169 pr_warn("----------------------------------\n"); 3170 3171 pr_warn("%s/%d is trying to lock:\n", curr->comm, task_pid_nr(curr)); 3172 print_lock(hlock); 3173 3174 pr_warn("\nbut this task is not holding:\n"); 3175 pr_warn("%s\n", hlock->nest_lock->name); 3176 3177 pr_warn("\nstack backtrace:\n"); 3178 dump_stack(); 3179 3180 pr_warn("\nother info that might help us debug this:\n"); 3181 lockdep_print_held_locks(curr); 3182 3183 pr_warn("\nstack backtrace:\n"); 3184 dump_stack(); 3185 3186 return 0; 3187 } 3188 3189 static int __lock_is_held(const struct lockdep_map *lock, int read); 3190 3191 /* 3192 * This gets called for every mutex_lock*()/spin_lock*() operation. 3193 * We maintain the dependency maps and validate the locking attempt: 3194 * 3195 * The callers must make sure that IRQs are disabled before calling it, 3196 * otherwise we could get an interrupt which would want to take locks, 3197 * which would end up in lockdep again. 3198 */ 3199 static int __lock_acquire(struct lockdep_map *lock, unsigned int subclass, 3200 int trylock, int read, int check, int hardirqs_off, 3201 struct lockdep_map *nest_lock, unsigned long ip, 3202 int references, int pin_count) 3203 { 3204 struct task_struct *curr = current; 3205 struct lock_class *class = NULL; 3206 struct held_lock *hlock; 3207 unsigned int depth; 3208 int chain_head = 0; 3209 int class_idx; 3210 u64 chain_key; 3211 3212 if (unlikely(!debug_locks)) 3213 return 0; 3214 3215 if (!prove_locking || lock->key == &__lockdep_no_validate__) 3216 check = 0; 3217 3218 if (subclass < NR_LOCKDEP_CACHING_CLASSES) 3219 class = lock->class_cache[subclass]; 3220 /* 3221 * Not cached? 3222 */ 3223 if (unlikely(!class)) { 3224 class = register_lock_class(lock, subclass, 0); 3225 if (!class) 3226 return 0; 3227 } 3228 3229 debug_class_ops_inc(class); 3230 3231 if (very_verbose(class)) { 3232 printk("\nacquire class [%px] %s", class->key, class->name); 3233 if (class->name_version > 1) 3234 printk(KERN_CONT "#%d", class->name_version); 3235 printk(KERN_CONT "\n"); 3236 dump_stack(); 3237 } 3238 3239 /* 3240 * Add the lock to the list of currently held locks. 3241 * (we dont increase the depth just yet, up until the 3242 * dependency checks are done) 3243 */ 3244 depth = curr->lockdep_depth; 3245 /* 3246 * Ran out of static storage for our per-task lock stack again have we? 3247 */ 3248 if (DEBUG_LOCKS_WARN_ON(depth >= MAX_LOCK_DEPTH)) 3249 return 0; 3250 3251 class_idx = class - lock_classes + 1; 3252 3253 if (depth) { 3254 hlock = curr->held_locks + depth - 1; 3255 if (hlock->class_idx == class_idx && nest_lock) { 3256 if (hlock->references) { 3257 /* 3258 * Check: unsigned int references:12, overflow. 3259 */ 3260 if (DEBUG_LOCKS_WARN_ON(hlock->references == (1 << 12)-1)) 3261 return 0; 3262 3263 hlock->references++; 3264 } else { 3265 hlock->references = 2; 3266 } 3267 3268 return 1; 3269 } 3270 } 3271 3272 hlock = curr->held_locks + depth; 3273 /* 3274 * Plain impossible, we just registered it and checked it weren't no 3275 * NULL like.. I bet this mushroom I ate was good! 3276 */ 3277 if (DEBUG_LOCKS_WARN_ON(!class)) 3278 return 0; 3279 hlock->class_idx = class_idx; 3280 hlock->acquire_ip = ip; 3281 hlock->instance = lock; 3282 hlock->nest_lock = nest_lock; 3283 hlock->irq_context = task_irq_context(curr); 3284 hlock->trylock = trylock; 3285 hlock->read = read; 3286 hlock->check = check; 3287 hlock->hardirqs_off = !!hardirqs_off; 3288 hlock->references = references; 3289 #ifdef CONFIG_LOCK_STAT 3290 hlock->waittime_stamp = 0; 3291 hlock->holdtime_stamp = lockstat_clock(); 3292 #endif 3293 hlock->pin_count = pin_count; 3294 3295 if (check && !mark_irqflags(curr, hlock)) 3296 return 0; 3297 3298 /* mark it as used: */ 3299 if (!mark_lock(curr, hlock, LOCK_USED)) 3300 return 0; 3301 3302 /* 3303 * Calculate the chain hash: it's the combined hash of all the 3304 * lock keys along the dependency chain. We save the hash value 3305 * at every step so that we can get the current hash easily 3306 * after unlock. The chain hash is then used to cache dependency 3307 * results. 3308 * 3309 * The 'key ID' is what is the most compact key value to drive 3310 * the hash, not class->key. 3311 */ 3312 /* 3313 * Whoops, we did it again.. ran straight out of our static allocation. 3314 */ 3315 if (DEBUG_LOCKS_WARN_ON(class_idx > MAX_LOCKDEP_KEYS)) 3316 return 0; 3317 3318 chain_key = curr->curr_chain_key; 3319 if (!depth) { 3320 /* 3321 * How can we have a chain hash when we ain't got no keys?! 3322 */ 3323 if (DEBUG_LOCKS_WARN_ON(chain_key != 0)) 3324 return 0; 3325 chain_head = 1; 3326 } 3327 3328 hlock->prev_chain_key = chain_key; 3329 if (separate_irq_context(curr, hlock)) { 3330 chain_key = 0; 3331 chain_head = 1; 3332 } 3333 chain_key = iterate_chain_key(chain_key, class_idx); 3334 3335 if (nest_lock && !__lock_is_held(nest_lock, -1)) 3336 return print_lock_nested_lock_not_held(curr, hlock, ip); 3337 3338 if (!validate_chain(curr, lock, hlock, chain_head, chain_key)) 3339 return 0; 3340 3341 curr->curr_chain_key = chain_key; 3342 curr->lockdep_depth++; 3343 check_chain_key(curr); 3344 #ifdef CONFIG_DEBUG_LOCKDEP 3345 if (unlikely(!debug_locks)) 3346 return 0; 3347 #endif 3348 if (unlikely(curr->lockdep_depth >= MAX_LOCK_DEPTH)) { 3349 debug_locks_off(); 3350 print_lockdep_off("BUG: MAX_LOCK_DEPTH too low!"); 3351 printk(KERN_DEBUG "depth: %i max: %lu!\n", 3352 curr->lockdep_depth, MAX_LOCK_DEPTH); 3353 3354 lockdep_print_held_locks(current); 3355 debug_show_all_locks(); 3356 dump_stack(); 3357 3358 return 0; 3359 } 3360 3361 if (unlikely(curr->lockdep_depth > max_lockdep_depth)) 3362 max_lockdep_depth = curr->lockdep_depth; 3363 3364 return 1; 3365 } 3366 3367 static int 3368 print_unlock_imbalance_bug(struct task_struct *curr, struct lockdep_map *lock, 3369 unsigned long ip) 3370 { 3371 if (!debug_locks_off()) 3372 return 0; 3373 if (debug_locks_silent) 3374 return 0; 3375 3376 pr_warn("\n"); 3377 pr_warn("=====================================\n"); 3378 pr_warn("WARNING: bad unlock balance detected!\n"); 3379 print_kernel_ident(); 3380 pr_warn("-------------------------------------\n"); 3381 pr_warn("%s/%d is trying to release lock (", 3382 curr->comm, task_pid_nr(curr)); 3383 print_lockdep_cache(lock); 3384 pr_cont(") at:\n"); 3385 print_ip_sym(ip); 3386 pr_warn("but there are no more locks to release!\n"); 3387 pr_warn("\nother info that might help us debug this:\n"); 3388 lockdep_print_held_locks(curr); 3389 3390 pr_warn("\nstack backtrace:\n"); 3391 dump_stack(); 3392 3393 return 0; 3394 } 3395 3396 static int match_held_lock(const struct held_lock *hlock, 3397 const struct lockdep_map *lock) 3398 { 3399 if (hlock->instance == lock) 3400 return 1; 3401 3402 if (hlock->references) { 3403 const struct lock_class *class = lock->class_cache[0]; 3404 3405 if (!class) 3406 class = look_up_lock_class(lock, 0); 3407 3408 /* 3409 * If look_up_lock_class() failed to find a class, we're trying 3410 * to test if we hold a lock that has never yet been acquired. 3411 * Clearly if the lock hasn't been acquired _ever_, we're not 3412 * holding it either, so report failure. 3413 */ 3414 if (!class) 3415 return 0; 3416 3417 /* 3418 * References, but not a lock we're actually ref-counting? 3419 * State got messed up, follow the sites that change ->references 3420 * and try to make sense of it. 3421 */ 3422 if (DEBUG_LOCKS_WARN_ON(!hlock->nest_lock)) 3423 return 0; 3424 3425 if (hlock->class_idx == class - lock_classes + 1) 3426 return 1; 3427 } 3428 3429 return 0; 3430 } 3431 3432 /* @depth must not be zero */ 3433 static struct held_lock *find_held_lock(struct task_struct *curr, 3434 struct lockdep_map *lock, 3435 unsigned int depth, int *idx) 3436 { 3437 struct held_lock *ret, *hlock, *prev_hlock; 3438 int i; 3439 3440 i = depth - 1; 3441 hlock = curr->held_locks + i; 3442 ret = hlock; 3443 if (match_held_lock(hlock, lock)) 3444 goto out; 3445 3446 ret = NULL; 3447 for (i--, prev_hlock = hlock--; 3448 i >= 0; 3449 i--, prev_hlock = hlock--) { 3450 /* 3451 * We must not cross into another context: 3452 */ 3453 if (prev_hlock->irq_context != hlock->irq_context) { 3454 ret = NULL; 3455 break; 3456 } 3457 if (match_held_lock(hlock, lock)) { 3458 ret = hlock; 3459 break; 3460 } 3461 } 3462 3463 out: 3464 *idx = i; 3465 return ret; 3466 } 3467 3468 static int reacquire_held_locks(struct task_struct *curr, unsigned int depth, 3469 int idx) 3470 { 3471 struct held_lock *hlock; 3472 3473 if (DEBUG_LOCKS_WARN_ON(!irqs_disabled())) 3474 return 0; 3475 3476 for (hlock = curr->held_locks + idx; idx < depth; idx++, hlock++) { 3477 if (!__lock_acquire(hlock->instance, 3478 hlock_class(hlock)->subclass, 3479 hlock->trylock, 3480 hlock->read, hlock->check, 3481 hlock->hardirqs_off, 3482 hlock->nest_lock, hlock->acquire_ip, 3483 hlock->references, hlock->pin_count)) 3484 return 1; 3485 } 3486 return 0; 3487 } 3488 3489 static int 3490 __lock_set_class(struct lockdep_map *lock, const char *name, 3491 struct lock_class_key *key, unsigned int subclass, 3492 unsigned long ip) 3493 { 3494 struct task_struct *curr = current; 3495 struct held_lock *hlock; 3496 struct lock_class *class; 3497 unsigned int depth; 3498 int i; 3499 3500 depth = curr->lockdep_depth; 3501 /* 3502 * This function is about (re)setting the class of a held lock, 3503 * yet we're not actually holding any locks. Naughty user! 3504 */ 3505 if (DEBUG_LOCKS_WARN_ON(!depth)) 3506 return 0; 3507 3508 hlock = find_held_lock(curr, lock, depth, &i); 3509 if (!hlock) 3510 return print_unlock_imbalance_bug(curr, lock, ip); 3511 3512 lockdep_init_map(lock, name, key, 0); 3513 class = register_lock_class(lock, subclass, 0); 3514 hlock->class_idx = class - lock_classes + 1; 3515 3516 curr->lockdep_depth = i; 3517 curr->curr_chain_key = hlock->prev_chain_key; 3518 3519 if (reacquire_held_locks(curr, depth, i)) 3520 return 0; 3521 3522 /* 3523 * I took it apart and put it back together again, except now I have 3524 * these 'spare' parts.. where shall I put them. 3525 */ 3526 if (DEBUG_LOCKS_WARN_ON(curr->lockdep_depth != depth)) 3527 return 0; 3528 return 1; 3529 } 3530 3531 static int __lock_downgrade(struct lockdep_map *lock, unsigned long ip) 3532 { 3533 struct task_struct *curr = current; 3534 struct held_lock *hlock; 3535 unsigned int depth; 3536 int i; 3537 3538 depth = curr->lockdep_depth; 3539 /* 3540 * This function is about (re)setting the class of a held lock, 3541 * yet we're not actually holding any locks. Naughty user! 3542 */ 3543 if (DEBUG_LOCKS_WARN_ON(!depth)) 3544 return 0; 3545 3546 hlock = find_held_lock(curr, lock, depth, &i); 3547 if (!hlock) 3548 return print_unlock_imbalance_bug(curr, lock, ip); 3549 3550 curr->lockdep_depth = i; 3551 curr->curr_chain_key = hlock->prev_chain_key; 3552 3553 WARN(hlock->read, "downgrading a read lock"); 3554 hlock->read = 1; 3555 hlock->acquire_ip = ip; 3556 3557 if (reacquire_held_locks(curr, depth, i)) 3558 return 0; 3559 3560 /* 3561 * I took it apart and put it back together again, except now I have 3562 * these 'spare' parts.. where shall I put them. 3563 */ 3564 if (DEBUG_LOCKS_WARN_ON(curr->lockdep_depth != depth)) 3565 return 0; 3566 return 1; 3567 } 3568 3569 /* 3570 * Remove the lock to the list of currently held locks - this gets 3571 * called on mutex_unlock()/spin_unlock*() (or on a failed 3572 * mutex_lock_interruptible()). 3573 * 3574 * @nested is an hysterical artifact, needs a tree wide cleanup. 3575 */ 3576 static int 3577 __lock_release(struct lockdep_map *lock, int nested, unsigned long ip) 3578 { 3579 struct task_struct *curr = current; 3580 struct held_lock *hlock; 3581 unsigned int depth; 3582 int i; 3583 3584 if (unlikely(!debug_locks)) 3585 return 0; 3586 3587 depth = curr->lockdep_depth; 3588 /* 3589 * So we're all set to release this lock.. wait what lock? We don't 3590 * own any locks, you've been drinking again? 3591 */ 3592 if (DEBUG_LOCKS_WARN_ON(depth <= 0)) 3593 return print_unlock_imbalance_bug(curr, lock, ip); 3594 3595 /* 3596 * Check whether the lock exists in the current stack 3597 * of held locks: 3598 */ 3599 hlock = find_held_lock(curr, lock, depth, &i); 3600 if (!hlock) 3601 return print_unlock_imbalance_bug(curr, lock, ip); 3602 3603 if (hlock->instance == lock) 3604 lock_release_holdtime(hlock); 3605 3606 WARN(hlock->pin_count, "releasing a pinned lock\n"); 3607 3608 if (hlock->references) { 3609 hlock->references--; 3610 if (hlock->references) { 3611 /* 3612 * We had, and after removing one, still have 3613 * references, the current lock stack is still 3614 * valid. We're done! 3615 */ 3616 return 1; 3617 } 3618 } 3619 3620 /* 3621 * We have the right lock to unlock, 'hlock' points to it. 3622 * Now we remove it from the stack, and add back the other 3623 * entries (if any), recalculating the hash along the way: 3624 */ 3625 3626 curr->lockdep_depth = i; 3627 curr->curr_chain_key = hlock->prev_chain_key; 3628 3629 /* 3630 * The most likely case is when the unlock is on the innermost 3631 * lock. In this case, we are done! 3632 */ 3633 if (i == depth-1) 3634 return 1; 3635 3636 if (reacquire_held_locks(curr, depth, i + 1)) 3637 return 0; 3638 3639 /* 3640 * We had N bottles of beer on the wall, we drank one, but now 3641 * there's not N-1 bottles of beer left on the wall... 3642 */ 3643 DEBUG_LOCKS_WARN_ON(curr->lockdep_depth != depth-1); 3644 3645 /* 3646 * Since reacquire_held_locks() would have called check_chain_key() 3647 * indirectly via __lock_acquire(), we don't need to do it again 3648 * on return. 3649 */ 3650 return 0; 3651 } 3652 3653 static int __lock_is_held(const struct lockdep_map *lock, int read) 3654 { 3655 struct task_struct *curr = current; 3656 int i; 3657 3658 for (i = 0; i < curr->lockdep_depth; i++) { 3659 struct held_lock *hlock = curr->held_locks + i; 3660 3661 if (match_held_lock(hlock, lock)) { 3662 if (read == -1 || hlock->read == read) 3663 return 1; 3664 3665 return 0; 3666 } 3667 } 3668 3669 return 0; 3670 } 3671 3672 static struct pin_cookie __lock_pin_lock(struct lockdep_map *lock) 3673 { 3674 struct pin_cookie cookie = NIL_COOKIE; 3675 struct task_struct *curr = current; 3676 int i; 3677 3678 if (unlikely(!debug_locks)) 3679 return cookie; 3680 3681 for (i = 0; i < curr->lockdep_depth; i++) { 3682 struct held_lock *hlock = curr->held_locks + i; 3683 3684 if (match_held_lock(hlock, lock)) { 3685 /* 3686 * Grab 16bits of randomness; this is sufficient to not 3687 * be guessable and still allows some pin nesting in 3688 * our u32 pin_count. 3689 */ 3690 cookie.val = 1 + (prandom_u32() >> 16); 3691 hlock->pin_count += cookie.val; 3692 return cookie; 3693 } 3694 } 3695 3696 WARN(1, "pinning an unheld lock\n"); 3697 return cookie; 3698 } 3699 3700 static void __lock_repin_lock(struct lockdep_map *lock, struct pin_cookie cookie) 3701 { 3702 struct task_struct *curr = current; 3703 int i; 3704 3705 if (unlikely(!debug_locks)) 3706 return; 3707 3708 for (i = 0; i < curr->lockdep_depth; i++) { 3709 struct held_lock *hlock = curr->held_locks + i; 3710 3711 if (match_held_lock(hlock, lock)) { 3712 hlock->pin_count += cookie.val; 3713 return; 3714 } 3715 } 3716 3717 WARN(1, "pinning an unheld lock\n"); 3718 } 3719 3720 static void __lock_unpin_lock(struct lockdep_map *lock, struct pin_cookie cookie) 3721 { 3722 struct task_struct *curr = current; 3723 int i; 3724 3725 if (unlikely(!debug_locks)) 3726 return; 3727 3728 for (i = 0; i < curr->lockdep_depth; i++) { 3729 struct held_lock *hlock = curr->held_locks + i; 3730 3731 if (match_held_lock(hlock, lock)) { 3732 if (WARN(!hlock->pin_count, "unpinning an unpinned lock\n")) 3733 return; 3734 3735 hlock->pin_count -= cookie.val; 3736 3737 if (WARN((int)hlock->pin_count < 0, "pin count corrupted\n")) 3738 hlock->pin_count = 0; 3739 3740 return; 3741 } 3742 } 3743 3744 WARN(1, "unpinning an unheld lock\n"); 3745 } 3746 3747 /* 3748 * Check whether we follow the irq-flags state precisely: 3749 */ 3750 static void check_flags(unsigned long flags) 3751 { 3752 #if defined(CONFIG_PROVE_LOCKING) && defined(CONFIG_DEBUG_LOCKDEP) && \ 3753 defined(CONFIG_TRACE_IRQFLAGS) 3754 if (!debug_locks) 3755 return; 3756 3757 if (irqs_disabled_flags(flags)) { 3758 if (DEBUG_LOCKS_WARN_ON(current->hardirqs_enabled)) { 3759 printk("possible reason: unannotated irqs-off.\n"); 3760 } 3761 } else { 3762 if (DEBUG_LOCKS_WARN_ON(!current->hardirqs_enabled)) { 3763 printk("possible reason: unannotated irqs-on.\n"); 3764 } 3765 } 3766 3767 /* 3768 * We dont accurately track softirq state in e.g. 3769 * hardirq contexts (such as on 4KSTACKS), so only 3770 * check if not in hardirq contexts: 3771 */ 3772 if (!hardirq_count()) { 3773 if (softirq_count()) { 3774 /* like the above, but with softirqs */ 3775 DEBUG_LOCKS_WARN_ON(current->softirqs_enabled); 3776 } else { 3777 /* lick the above, does it taste good? */ 3778 DEBUG_LOCKS_WARN_ON(!current->softirqs_enabled); 3779 } 3780 } 3781 3782 if (!debug_locks) 3783 print_irqtrace_events(current); 3784 #endif 3785 } 3786 3787 void lock_set_class(struct lockdep_map *lock, const char *name, 3788 struct lock_class_key *key, unsigned int subclass, 3789 unsigned long ip) 3790 { 3791 unsigned long flags; 3792 3793 if (unlikely(current->lockdep_recursion)) 3794 return; 3795 3796 raw_local_irq_save(flags); 3797 current->lockdep_recursion = 1; 3798 check_flags(flags); 3799 if (__lock_set_class(lock, name, key, subclass, ip)) 3800 check_chain_key(current); 3801 current->lockdep_recursion = 0; 3802 raw_local_irq_restore(flags); 3803 } 3804 EXPORT_SYMBOL_GPL(lock_set_class); 3805 3806 void lock_downgrade(struct lockdep_map *lock, unsigned long ip) 3807 { 3808 unsigned long flags; 3809 3810 if (unlikely(current->lockdep_recursion)) 3811 return; 3812 3813 raw_local_irq_save(flags); 3814 current->lockdep_recursion = 1; 3815 check_flags(flags); 3816 if (__lock_downgrade(lock, ip)) 3817 check_chain_key(current); 3818 current->lockdep_recursion = 0; 3819 raw_local_irq_restore(flags); 3820 } 3821 EXPORT_SYMBOL_GPL(lock_downgrade); 3822 3823 /* 3824 * We are not always called with irqs disabled - do that here, 3825 * and also avoid lockdep recursion: 3826 */ 3827 void lock_acquire(struct lockdep_map *lock, unsigned int subclass, 3828 int trylock, int read, int check, 3829 struct lockdep_map *nest_lock, unsigned long ip) 3830 { 3831 unsigned long flags; 3832 3833 if (unlikely(current->lockdep_recursion)) 3834 return; 3835 3836 raw_local_irq_save(flags); 3837 check_flags(flags); 3838 3839 current->lockdep_recursion = 1; 3840 trace_lock_acquire(lock, subclass, trylock, read, check, nest_lock, ip); 3841 __lock_acquire(lock, subclass, trylock, read, check, 3842 irqs_disabled_flags(flags), nest_lock, ip, 0, 0); 3843 current->lockdep_recursion = 0; 3844 raw_local_irq_restore(flags); 3845 } 3846 EXPORT_SYMBOL_GPL(lock_acquire); 3847 3848 void lock_release(struct lockdep_map *lock, int nested, 3849 unsigned long ip) 3850 { 3851 unsigned long flags; 3852 3853 if (unlikely(current->lockdep_recursion)) 3854 return; 3855 3856 raw_local_irq_save(flags); 3857 check_flags(flags); 3858 current->lockdep_recursion = 1; 3859 trace_lock_release(lock, ip); 3860 if (__lock_release(lock, nested, ip)) 3861 check_chain_key(current); 3862 current->lockdep_recursion = 0; 3863 raw_local_irq_restore(flags); 3864 } 3865 EXPORT_SYMBOL_GPL(lock_release); 3866 3867 int lock_is_held_type(const struct lockdep_map *lock, int read) 3868 { 3869 unsigned long flags; 3870 int ret = 0; 3871 3872 if (unlikely(current->lockdep_recursion)) 3873 return 1; /* avoid false negative lockdep_assert_held() */ 3874 3875 raw_local_irq_save(flags); 3876 check_flags(flags); 3877 3878 current->lockdep_recursion = 1; 3879 ret = __lock_is_held(lock, read); 3880 current->lockdep_recursion = 0; 3881 raw_local_irq_restore(flags); 3882 3883 return ret; 3884 } 3885 EXPORT_SYMBOL_GPL(lock_is_held_type); 3886 3887 struct pin_cookie lock_pin_lock(struct lockdep_map *lock) 3888 { 3889 struct pin_cookie cookie = NIL_COOKIE; 3890 unsigned long flags; 3891 3892 if (unlikely(current->lockdep_recursion)) 3893 return cookie; 3894 3895 raw_local_irq_save(flags); 3896 check_flags(flags); 3897 3898 current->lockdep_recursion = 1; 3899 cookie = __lock_pin_lock(lock); 3900 current->lockdep_recursion = 0; 3901 raw_local_irq_restore(flags); 3902 3903 return cookie; 3904 } 3905 EXPORT_SYMBOL_GPL(lock_pin_lock); 3906 3907 void lock_repin_lock(struct lockdep_map *lock, struct pin_cookie cookie) 3908 { 3909 unsigned long flags; 3910 3911 if (unlikely(current->lockdep_recursion)) 3912 return; 3913 3914 raw_local_irq_save(flags); 3915 check_flags(flags); 3916 3917 current->lockdep_recursion = 1; 3918 __lock_repin_lock(lock, cookie); 3919 current->lockdep_recursion = 0; 3920 raw_local_irq_restore(flags); 3921 } 3922 EXPORT_SYMBOL_GPL(lock_repin_lock); 3923 3924 void lock_unpin_lock(struct lockdep_map *lock, struct pin_cookie cookie) 3925 { 3926 unsigned long flags; 3927 3928 if (unlikely(current->lockdep_recursion)) 3929 return; 3930 3931 raw_local_irq_save(flags); 3932 check_flags(flags); 3933 3934 current->lockdep_recursion = 1; 3935 __lock_unpin_lock(lock, cookie); 3936 current->lockdep_recursion = 0; 3937 raw_local_irq_restore(flags); 3938 } 3939 EXPORT_SYMBOL_GPL(lock_unpin_lock); 3940 3941 #ifdef CONFIG_LOCK_STAT 3942 static int 3943 print_lock_contention_bug(struct task_struct *curr, struct lockdep_map *lock, 3944 unsigned long ip) 3945 { 3946 if (!debug_locks_off()) 3947 return 0; 3948 if (debug_locks_silent) 3949 return 0; 3950 3951 pr_warn("\n"); 3952 pr_warn("=================================\n"); 3953 pr_warn("WARNING: bad contention detected!\n"); 3954 print_kernel_ident(); 3955 pr_warn("---------------------------------\n"); 3956 pr_warn("%s/%d is trying to contend lock (", 3957 curr->comm, task_pid_nr(curr)); 3958 print_lockdep_cache(lock); 3959 pr_cont(") at:\n"); 3960 print_ip_sym(ip); 3961 pr_warn("but there are no locks held!\n"); 3962 pr_warn("\nother info that might help us debug this:\n"); 3963 lockdep_print_held_locks(curr); 3964 3965 pr_warn("\nstack backtrace:\n"); 3966 dump_stack(); 3967 3968 return 0; 3969 } 3970 3971 static void 3972 __lock_contended(struct lockdep_map *lock, unsigned long ip) 3973 { 3974 struct task_struct *curr = current; 3975 struct held_lock *hlock; 3976 struct lock_class_stats *stats; 3977 unsigned int depth; 3978 int i, contention_point, contending_point; 3979 3980 depth = curr->lockdep_depth; 3981 /* 3982 * Whee, we contended on this lock, except it seems we're not 3983 * actually trying to acquire anything much at all.. 3984 */ 3985 if (DEBUG_LOCKS_WARN_ON(!depth)) 3986 return; 3987 3988 hlock = find_held_lock(curr, lock, depth, &i); 3989 if (!hlock) { 3990 print_lock_contention_bug(curr, lock, ip); 3991 return; 3992 } 3993 3994 if (hlock->instance != lock) 3995 return; 3996 3997 hlock->waittime_stamp = lockstat_clock(); 3998 3999 contention_point = lock_point(hlock_class(hlock)->contention_point, ip); 4000 contending_point = lock_point(hlock_class(hlock)->contending_point, 4001 lock->ip); 4002 4003 stats = get_lock_stats(hlock_class(hlock)); 4004 if (contention_point < LOCKSTAT_POINTS) 4005 stats->contention_point[contention_point]++; 4006 if (contending_point < LOCKSTAT_POINTS) 4007 stats->contending_point[contending_point]++; 4008 if (lock->cpu != smp_processor_id()) 4009 stats->bounces[bounce_contended + !!hlock->read]++; 4010 } 4011 4012 static void 4013 __lock_acquired(struct lockdep_map *lock, unsigned long ip) 4014 { 4015 struct task_struct *curr = current; 4016 struct held_lock *hlock; 4017 struct lock_class_stats *stats; 4018 unsigned int depth; 4019 u64 now, waittime = 0; 4020 int i, cpu; 4021 4022 depth = curr->lockdep_depth; 4023 /* 4024 * Yay, we acquired ownership of this lock we didn't try to 4025 * acquire, how the heck did that happen? 4026 */ 4027 if (DEBUG_LOCKS_WARN_ON(!depth)) 4028 return; 4029 4030 hlock = find_held_lock(curr, lock, depth, &i); 4031 if (!hlock) { 4032 print_lock_contention_bug(curr, lock, _RET_IP_); 4033 return; 4034 } 4035 4036 if (hlock->instance != lock) 4037 return; 4038 4039 cpu = smp_processor_id(); 4040 if (hlock->waittime_stamp) { 4041 now = lockstat_clock(); 4042 waittime = now - hlock->waittime_stamp; 4043 hlock->holdtime_stamp = now; 4044 } 4045 4046 trace_lock_acquired(lock, ip); 4047 4048 stats = get_lock_stats(hlock_class(hlock)); 4049 if (waittime) { 4050 if (hlock->read) 4051 lock_time_inc(&stats->read_waittime, waittime); 4052 else 4053 lock_time_inc(&stats->write_waittime, waittime); 4054 } 4055 if (lock->cpu != cpu) 4056 stats->bounces[bounce_acquired + !!hlock->read]++; 4057 4058 lock->cpu = cpu; 4059 lock->ip = ip; 4060 } 4061 4062 void lock_contended(struct lockdep_map *lock, unsigned long ip) 4063 { 4064 unsigned long flags; 4065 4066 if (unlikely(!lock_stat || !debug_locks)) 4067 return; 4068 4069 if (unlikely(current->lockdep_recursion)) 4070 return; 4071 4072 raw_local_irq_save(flags); 4073 check_flags(flags); 4074 current->lockdep_recursion = 1; 4075 trace_lock_contended(lock, ip); 4076 __lock_contended(lock, ip); 4077 current->lockdep_recursion = 0; 4078 raw_local_irq_restore(flags); 4079 } 4080 EXPORT_SYMBOL_GPL(lock_contended); 4081 4082 void lock_acquired(struct lockdep_map *lock, unsigned long ip) 4083 { 4084 unsigned long flags; 4085 4086 if (unlikely(!lock_stat || !debug_locks)) 4087 return; 4088 4089 if (unlikely(current->lockdep_recursion)) 4090 return; 4091 4092 raw_local_irq_save(flags); 4093 check_flags(flags); 4094 current->lockdep_recursion = 1; 4095 __lock_acquired(lock, ip); 4096 current->lockdep_recursion = 0; 4097 raw_local_irq_restore(flags); 4098 } 4099 EXPORT_SYMBOL_GPL(lock_acquired); 4100 #endif 4101 4102 /* 4103 * Used by the testsuite, sanitize the validator state 4104 * after a simulated failure: 4105 */ 4106 4107 void lockdep_reset(void) 4108 { 4109 unsigned long flags; 4110 int i; 4111 4112 raw_local_irq_save(flags); 4113 current->curr_chain_key = 0; 4114 current->lockdep_depth = 0; 4115 current->lockdep_recursion = 0; 4116 memset(current->held_locks, 0, MAX_LOCK_DEPTH*sizeof(struct held_lock)); 4117 nr_hardirq_chains = 0; 4118 nr_softirq_chains = 0; 4119 nr_process_chains = 0; 4120 debug_locks = 1; 4121 for (i = 0; i < CHAINHASH_SIZE; i++) 4122 INIT_HLIST_HEAD(chainhash_table + i); 4123 raw_local_irq_restore(flags); 4124 } 4125 4126 /* 4127 * Remove all references to a lock class. The caller must hold the graph lock. 4128 */ 4129 static void zap_class(struct lock_class *class) 4130 { 4131 int i; 4132 4133 /* 4134 * Remove all dependencies this lock is 4135 * involved in: 4136 */ 4137 for (i = 0; i < nr_list_entries; i++) { 4138 if (list_entries[i].class == class) 4139 list_del_rcu(&list_entries[i].entry); 4140 } 4141 /* 4142 * Unhash the class and remove it from the all_lock_classes list: 4143 */ 4144 hlist_del_rcu(&class->hash_entry); 4145 list_del(&class->lock_entry); 4146 4147 RCU_INIT_POINTER(class->key, NULL); 4148 RCU_INIT_POINTER(class->name, NULL); 4149 } 4150 4151 static inline int within(const void *addr, void *start, unsigned long size) 4152 { 4153 return addr >= start && addr < start + size; 4154 } 4155 4156 /* 4157 * Used in module.c to remove lock classes from memory that is going to be 4158 * freed; and possibly re-used by other modules. 4159 * 4160 * We will have had one sync_sched() before getting here, so we're guaranteed 4161 * nobody will look up these exact classes -- they're properly dead but still 4162 * allocated. 4163 */ 4164 void lockdep_free_key_range(void *start, unsigned long size) 4165 { 4166 struct lock_class *class; 4167 struct hlist_head *head; 4168 unsigned long flags; 4169 int i; 4170 int locked; 4171 4172 raw_local_irq_save(flags); 4173 locked = graph_lock(); 4174 4175 /* 4176 * Unhash all classes that were created by this module: 4177 */ 4178 for (i = 0; i < CLASSHASH_SIZE; i++) { 4179 head = classhash_table + i; 4180 hlist_for_each_entry_rcu(class, head, hash_entry) { 4181 if (within(class->key, start, size)) 4182 zap_class(class); 4183 else if (within(class->name, start, size)) 4184 zap_class(class); 4185 } 4186 } 4187 4188 if (locked) 4189 graph_unlock(); 4190 raw_local_irq_restore(flags); 4191 4192 /* 4193 * Wait for any possible iterators from look_up_lock_class() to pass 4194 * before continuing to free the memory they refer to. 4195 * 4196 * sync_sched() is sufficient because the read-side is IRQ disable. 4197 */ 4198 synchronize_rcu(); 4199 4200 /* 4201 * XXX at this point we could return the resources to the pool; 4202 * instead we leak them. We would need to change to bitmap allocators 4203 * instead of the linear allocators we have now. 4204 */ 4205 } 4206 4207 /* 4208 * Check whether any element of the @lock->class_cache[] array refers to a 4209 * registered lock class. The caller must hold either the graph lock or the 4210 * RCU read lock. 4211 */ 4212 static bool lock_class_cache_is_registered(struct lockdep_map *lock) 4213 { 4214 struct lock_class *class; 4215 struct hlist_head *head; 4216 int i, j; 4217 4218 for (i = 0; i < CLASSHASH_SIZE; i++) { 4219 head = classhash_table + i; 4220 hlist_for_each_entry_rcu(class, head, hash_entry) { 4221 for (j = 0; j < NR_LOCKDEP_CACHING_CLASSES; j++) 4222 if (lock->class_cache[j] == class) 4223 return true; 4224 } 4225 } 4226 return false; 4227 } 4228 4229 void lockdep_reset_lock(struct lockdep_map *lock) 4230 { 4231 struct lock_class *class; 4232 unsigned long flags; 4233 int j, locked; 4234 4235 raw_local_irq_save(flags); 4236 locked = graph_lock(); 4237 4238 /* 4239 * Remove all classes this lock might have: 4240 */ 4241 for (j = 0; j < MAX_LOCKDEP_SUBCLASSES; j++) { 4242 /* 4243 * If the class exists we look it up and zap it: 4244 */ 4245 class = look_up_lock_class(lock, j); 4246 if (class) 4247 zap_class(class); 4248 } 4249 /* 4250 * Debug check: in the end all mapped classes should 4251 * be gone. 4252 */ 4253 if (unlikely(lock_class_cache_is_registered(lock))) { 4254 if (debug_locks_off_graph_unlock()) { 4255 /* 4256 * We all just reset everything, how did it match? 4257 */ 4258 WARN_ON(1); 4259 } 4260 goto out_restore; 4261 } 4262 if (locked) 4263 graph_unlock(); 4264 4265 out_restore: 4266 raw_local_irq_restore(flags); 4267 } 4268 4269 void __init lockdep_init(void) 4270 { 4271 printk("Lock dependency validator: Copyright (c) 2006 Red Hat, Inc., Ingo Molnar\n"); 4272 4273 printk("... MAX_LOCKDEP_SUBCLASSES: %lu\n", MAX_LOCKDEP_SUBCLASSES); 4274 printk("... MAX_LOCK_DEPTH: %lu\n", MAX_LOCK_DEPTH); 4275 printk("... MAX_LOCKDEP_KEYS: %lu\n", MAX_LOCKDEP_KEYS); 4276 printk("... CLASSHASH_SIZE: %lu\n", CLASSHASH_SIZE); 4277 printk("... MAX_LOCKDEP_ENTRIES: %lu\n", MAX_LOCKDEP_ENTRIES); 4278 printk("... MAX_LOCKDEP_CHAINS: %lu\n", MAX_LOCKDEP_CHAINS); 4279 printk("... CHAINHASH_SIZE: %lu\n", CHAINHASH_SIZE); 4280 4281 printk(" memory used by lock dependency info: %lu kB\n", 4282 (sizeof(struct lock_class) * MAX_LOCKDEP_KEYS + 4283 sizeof(struct list_head) * CLASSHASH_SIZE + 4284 sizeof(struct lock_list) * MAX_LOCKDEP_ENTRIES + 4285 sizeof(struct lock_chain) * MAX_LOCKDEP_CHAINS + 4286 sizeof(struct list_head) * CHAINHASH_SIZE 4287 #ifdef CONFIG_PROVE_LOCKING 4288 + sizeof(struct circular_queue) 4289 #endif 4290 ) / 1024 4291 ); 4292 4293 printk(" per task-struct memory footprint: %lu bytes\n", 4294 sizeof(struct held_lock) * MAX_LOCK_DEPTH); 4295 } 4296 4297 static void 4298 print_freed_lock_bug(struct task_struct *curr, const void *mem_from, 4299 const void *mem_to, struct held_lock *hlock) 4300 { 4301 if (!debug_locks_off()) 4302 return; 4303 if (debug_locks_silent) 4304 return; 4305 4306 pr_warn("\n"); 4307 pr_warn("=========================\n"); 4308 pr_warn("WARNING: held lock freed!\n"); 4309 print_kernel_ident(); 4310 pr_warn("-------------------------\n"); 4311 pr_warn("%s/%d is freeing memory %px-%px, with a lock still held there!\n", 4312 curr->comm, task_pid_nr(curr), mem_from, mem_to-1); 4313 print_lock(hlock); 4314 lockdep_print_held_locks(curr); 4315 4316 pr_warn("\nstack backtrace:\n"); 4317 dump_stack(); 4318 } 4319 4320 static inline int not_in_range(const void* mem_from, unsigned long mem_len, 4321 const void* lock_from, unsigned long lock_len) 4322 { 4323 return lock_from + lock_len <= mem_from || 4324 mem_from + mem_len <= lock_from; 4325 } 4326 4327 /* 4328 * Called when kernel memory is freed (or unmapped), or if a lock 4329 * is destroyed or reinitialized - this code checks whether there is 4330 * any held lock in the memory range of <from> to <to>: 4331 */ 4332 void debug_check_no_locks_freed(const void *mem_from, unsigned long mem_len) 4333 { 4334 struct task_struct *curr = current; 4335 struct held_lock *hlock; 4336 unsigned long flags; 4337 int i; 4338 4339 if (unlikely(!debug_locks)) 4340 return; 4341 4342 raw_local_irq_save(flags); 4343 for (i = 0; i < curr->lockdep_depth; i++) { 4344 hlock = curr->held_locks + i; 4345 4346 if (not_in_range(mem_from, mem_len, hlock->instance, 4347 sizeof(*hlock->instance))) 4348 continue; 4349 4350 print_freed_lock_bug(curr, mem_from, mem_from + mem_len, hlock); 4351 break; 4352 } 4353 raw_local_irq_restore(flags); 4354 } 4355 EXPORT_SYMBOL_GPL(debug_check_no_locks_freed); 4356 4357 static void print_held_locks_bug(void) 4358 { 4359 if (!debug_locks_off()) 4360 return; 4361 if (debug_locks_silent) 4362 return; 4363 4364 pr_warn("\n"); 4365 pr_warn("====================================\n"); 4366 pr_warn("WARNING: %s/%d still has locks held!\n", 4367 current->comm, task_pid_nr(current)); 4368 print_kernel_ident(); 4369 pr_warn("------------------------------------\n"); 4370 lockdep_print_held_locks(current); 4371 pr_warn("\nstack backtrace:\n"); 4372 dump_stack(); 4373 } 4374 4375 void debug_check_no_locks_held(void) 4376 { 4377 if (unlikely(current->lockdep_depth > 0)) 4378 print_held_locks_bug(); 4379 } 4380 EXPORT_SYMBOL_GPL(debug_check_no_locks_held); 4381 4382 #ifdef __KERNEL__ 4383 void debug_show_all_locks(void) 4384 { 4385 struct task_struct *g, *p; 4386 4387 if (unlikely(!debug_locks)) { 4388 pr_warn("INFO: lockdep is turned off.\n"); 4389 return; 4390 } 4391 pr_warn("\nShowing all locks held in the system:\n"); 4392 4393 rcu_read_lock(); 4394 for_each_process_thread(g, p) { 4395 if (!p->lockdep_depth) 4396 continue; 4397 lockdep_print_held_locks(p); 4398 touch_nmi_watchdog(); 4399 touch_all_softlockup_watchdogs(); 4400 } 4401 rcu_read_unlock(); 4402 4403 pr_warn("\n"); 4404 pr_warn("=============================================\n\n"); 4405 } 4406 EXPORT_SYMBOL_GPL(debug_show_all_locks); 4407 #endif 4408 4409 /* 4410 * Careful: only use this function if you are sure that 4411 * the task cannot run in parallel! 4412 */ 4413 void debug_show_held_locks(struct task_struct *task) 4414 { 4415 if (unlikely(!debug_locks)) { 4416 printk("INFO: lockdep is turned off.\n"); 4417 return; 4418 } 4419 lockdep_print_held_locks(task); 4420 } 4421 EXPORT_SYMBOL_GPL(debug_show_held_locks); 4422 4423 asmlinkage __visible void lockdep_sys_exit(void) 4424 { 4425 struct task_struct *curr = current; 4426 4427 if (unlikely(curr->lockdep_depth)) { 4428 if (!debug_locks_off()) 4429 return; 4430 pr_warn("\n"); 4431 pr_warn("================================================\n"); 4432 pr_warn("WARNING: lock held when returning to user space!\n"); 4433 print_kernel_ident(); 4434 pr_warn("------------------------------------------------\n"); 4435 pr_warn("%s/%d is leaving the kernel with locks still held!\n", 4436 curr->comm, curr->pid); 4437 lockdep_print_held_locks(curr); 4438 } 4439 4440 /* 4441 * The lock history for each syscall should be independent. So wipe the 4442 * slate clean on return to userspace. 4443 */ 4444 lockdep_invariant_state(false); 4445 } 4446 4447 void lockdep_rcu_suspicious(const char *file, const int line, const char *s) 4448 { 4449 struct task_struct *curr = current; 4450 4451 /* Note: the following can be executed concurrently, so be careful. */ 4452 pr_warn("\n"); 4453 pr_warn("=============================\n"); 4454 pr_warn("WARNING: suspicious RCU usage\n"); 4455 print_kernel_ident(); 4456 pr_warn("-----------------------------\n"); 4457 pr_warn("%s:%d %s!\n", file, line, s); 4458 pr_warn("\nother info that might help us debug this:\n\n"); 4459 pr_warn("\n%srcu_scheduler_active = %d, debug_locks = %d\n", 4460 !rcu_lockdep_current_cpu_online() 4461 ? "RCU used illegally from offline CPU!\n" 4462 : !rcu_is_watching() 4463 ? "RCU used illegally from idle CPU!\n" 4464 : "", 4465 rcu_scheduler_active, debug_locks); 4466 4467 /* 4468 * If a CPU is in the RCU-free window in idle (ie: in the section 4469 * between rcu_idle_enter() and rcu_idle_exit(), then RCU 4470 * considers that CPU to be in an "extended quiescent state", 4471 * which means that RCU will be completely ignoring that CPU. 4472 * Therefore, rcu_read_lock() and friends have absolutely no 4473 * effect on a CPU running in that state. In other words, even if 4474 * such an RCU-idle CPU has called rcu_read_lock(), RCU might well 4475 * delete data structures out from under it. RCU really has no 4476 * choice here: we need to keep an RCU-free window in idle where 4477 * the CPU may possibly enter into low power mode. This way we can 4478 * notice an extended quiescent state to other CPUs that started a grace 4479 * period. Otherwise we would delay any grace period as long as we run 4480 * in the idle task. 4481 * 4482 * So complain bitterly if someone does call rcu_read_lock(), 4483 * rcu_read_lock_bh() and so on from extended quiescent states. 4484 */ 4485 if (!rcu_is_watching()) 4486 pr_warn("RCU used illegally from extended quiescent state!\n"); 4487 4488 lockdep_print_held_locks(curr); 4489 pr_warn("\nstack backtrace:\n"); 4490 dump_stack(); 4491 } 4492 EXPORT_SYMBOL_GPL(lockdep_rcu_suspicious); 4493