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 tag 'locking-urgent-2020-12-27' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip

Pull locking fixes from Ingo Molnar:
"Misc fixes/updates:

- Fix static keys usage in module __init sections

- Add separate MAINTAINERS entry for static branches/calls

- Fix lockdep splat with CONFIG_PREEMPTIRQ_EVENTS=y tracing"

* tag 'locking-urgent-2020-12-27' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
softirq: Avoid bad tracing / lockdep interaction
jump_label/static_call: Add MAINTAINERS
jump_label: Fix usage in module __init

+22 -4
+16
MAINTAINERS
··· 16917 16917 S: Odd Fixes 16918 16918 F: drivers/net/ethernet/adaptec/starfire* 16919 16919 16920 + STATIC BRANCH/CALL 16921 + M: Peter Zijlstra <peterz@infradead.org> 16922 + M: Josh Poimboeuf <jpoimboe@redhat.com> 16923 + M: Jason Baron <jbaron@akamai.com> 16924 + R: Steven Rostedt <rostedt@goodmis.org> 16925 + R: Ard Biesheuvel <ardb@kernel.org> 16926 + S: Supported 16927 + F: arch/*/include/asm/jump_label*.h 16928 + F: arch/*/include/asm/static_call*.h 16929 + F: arch/*/kernel/jump_label.c 16930 + F: arch/*/kernel/static_call.c 16931 + F: include/linux/jump_label*.h 16932 + F: include/linux/static_call*.h 16933 + F: kernel/jump_label.c 16934 + F: kernel/static_call.c 16935 + 16920 16936 STEC S1220 SKD DRIVER 16921 16937 M: Damien Le Moal <Damien.LeMoal@wdc.com> 16922 16938 L: linux-block@vger.kernel.org
+5 -3
kernel/jump_label.c
··· 793 793 static void jump_label_update(struct static_key *key) 794 794 { 795 795 struct jump_entry *stop = __stop___jump_table; 796 + bool init = system_state < SYSTEM_RUNNING; 796 797 struct jump_entry *entry; 797 798 #ifdef CONFIG_MODULES 798 799 struct module *mod; ··· 805 804 806 805 preempt_disable(); 807 806 mod = __module_address((unsigned long)key); 808 - if (mod) 807 + if (mod) { 809 808 stop = mod->jump_entries + mod->num_jump_entries; 809 + init = mod->state == MODULE_STATE_COMING; 810 + } 810 811 preempt_enable(); 811 812 #endif 812 813 entry = static_key_entries(key); 813 814 /* if there are no users, entry can be NULL */ 814 815 if (entry) 815 - __jump_label_update(key, entry, stop, 816 - system_state < SYSTEM_RUNNING); 816 + __jump_label_update(key, entry, stop, init); 817 817 } 818 818 819 819 #ifdef CONFIG_STATIC_KEYS_SELFTEST
+1 -1
kernel/softirq.c
··· 186 186 * Keep preemption disabled until we are done with 187 187 * softirq processing: 188 188 */ 189 - preempt_count_sub(cnt - 1); 189 + __preempt_count_sub(cnt - 1); 190 190 191 191 if (unlikely(!in_interrupt() && local_softirq_pending())) { 192 192 /*