Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge branch 'locking-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip

Pull locking fix from Ingo Molnar:
"Fixes a crash when accessing /proc/lockdep"

* 'locking-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
locking/lockdep: Zap lock classes even with lock debugging disabled

+12 -17
+12 -17
kernel/locking/lockdep.c
··· 4689 4689 return; 4690 4690 4691 4691 raw_local_irq_save(flags); 4692 - if (!graph_lock()) 4693 - goto out_irq; 4692 + arch_spin_lock(&lockdep_lock); 4693 + current->lockdep_recursion = 1; 4694 4694 4695 4695 /* closed head */ 4696 4696 pf = delayed_free.pf + (delayed_free.index ^ 1); ··· 4702 4702 */ 4703 4703 call_rcu_zapped(delayed_free.pf + delayed_free.index); 4704 4704 4705 - graph_unlock(); 4706 - out_irq: 4705 + current->lockdep_recursion = 0; 4706 + arch_spin_unlock(&lockdep_lock); 4707 4707 raw_local_irq_restore(flags); 4708 4708 } 4709 4709 ··· 4744 4744 { 4745 4745 struct pending_free *pf; 4746 4746 unsigned long flags; 4747 - int locked; 4748 4747 4749 4748 init_data_structures_once(); 4750 4749 4751 4750 raw_local_irq_save(flags); 4752 - locked = graph_lock(); 4753 - if (!locked) 4754 - goto out_irq; 4755 - 4751 + arch_spin_lock(&lockdep_lock); 4752 + current->lockdep_recursion = 1; 4756 4753 pf = get_pending_free(); 4757 4754 __lockdep_free_key_range(pf, start, size); 4758 4755 call_rcu_zapped(pf); 4759 - 4760 - graph_unlock(); 4761 - out_irq: 4756 + current->lockdep_recursion = 0; 4757 + arch_spin_unlock(&lockdep_lock); 4762 4758 raw_local_irq_restore(flags); 4763 4759 4764 4760 /* ··· 4907 4911 return; 4908 4912 4909 4913 raw_local_irq_save(flags); 4910 - if (!graph_lock()) 4911 - goto out_irq; 4912 - 4914 + arch_spin_lock(&lockdep_lock); 4915 + current->lockdep_recursion = 1; 4913 4916 pf = get_pending_free(); 4914 4917 hlist_for_each_entry_rcu(k, hash_head, hash_entry) { 4915 4918 if (k == key) { ··· 4920 4925 WARN_ON_ONCE(!found); 4921 4926 __lockdep_free_key_range(pf, key, 1); 4922 4927 call_rcu_zapped(pf); 4923 - graph_unlock(); 4924 - out_irq: 4928 + current->lockdep_recursion = 0; 4929 + arch_spin_unlock(&lockdep_lock); 4925 4930 raw_local_irq_restore(flags); 4926 4931 4927 4932 /* Wait until is_dynamic_key() has finished accessing k->hash_entry. */