# git rev-parse -q --verify ab6f762f0f53162d41497708b33c9a3236d3609e^{commit} ab6f762f0f53162d41497708b33c9a3236d3609e already have revision, skipping fetch # git checkout -q -f -B kisskb ab6f762f0f53162d41497708b33c9a3236d3609e # git clean -qxdf # < git log -1 # commit ab6f762f0f53162d41497708b33c9a3236d3609e # Author: Sergey Senozhatsky # Date: Tue Mar 3 20:30:02 2020 +0900 # # printk: queue wake_up_klogd irq_work only if per-CPU areas are ready # # printk_deferred(), similarly to printk_safe/printk_nmi, does not # immediately attempt to print a new message on the consoles, avoiding # calls into non-reentrant kernel paths, e.g. scheduler or timekeeping, # which potentially can deadlock the system. # # Those printk() flavors, instead, rely on per-CPU flush irq_work to print # messages from safer contexts. For same reasons (recursive scheduler or # timekeeping calls) printk() uses per-CPU irq_work in order to wake up # user space syslog/kmsg readers. # # However, only printk_safe/printk_nmi do make sure that per-CPU areas # have been initialised and that it's safe to modify per-CPU irq_work. # This means that, for instance, should printk_deferred() be invoked "too # early", that is before per-CPU areas are initialised, printk_deferred() # will perform illegal per-CPU access. # # Lech Perczak [0] reports that after commit 1b710b1b10ef ("char/random: # silence a lockdep splat with printk()") user-space syslog/kmsg readers # are not able to read new kernel messages. # # The reason is printk_deferred() being called too early (as was pointed # out by Petr and John). # # Fix printk_deferred() and do not queue per-CPU irq_work before per-CPU # areas are initialized. # # Link: https://lore.kernel.org/lkml/aa0732c6-5c4e-8a8b-a1c1-75ebe3dca05b@camlintechnologies.com/ # Reported-by: Lech Perczak # Signed-off-by: Sergey Senozhatsky # Tested-by: Jann Horn # Reviewed-by: Petr Mladek # Cc: Greg Kroah-Hartman # Cc: Theodore Ts'o # Cc: John Ogness # Signed-off-by: Linus Torvalds # < /opt/cross/kisskb/korg/gcc-9.2.0-nolibc/powerpc64-linux/bin/powerpc64-linux-gcc --version # < /opt/cross/kisskb/korg/gcc-9.2.0-nolibc/powerpc64-linux/bin/powerpc64-linux-ld --version # < git log --format=%s --max-count=1 ab6f762f0f53162d41497708b33c9a3236d3609e # < make -s -j 32 ARCH=powerpc O=/kisskb/build/linus-rand_powerpc-randconfig_powerpc-gcc9 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-9.2.0-nolibc/powerpc64-linux/bin/powerpc64-linux- randconfig KCONFIG_SEED=0xAB2F7DB4 # Added to kconfig CONFIG_STANDALONE=y # Added to kconfig CONFIG_BUILD_DOCSRC=n # Added to kconfig CONFIG_MODULE_SIG=n # Added to kconfig CONFIG_CPU_BIG_ENDIAN=y # Added to kconfig CONFIG_PPC64=y # Added to kconfig CONFIG_PPC_DISABLE_WERROR=y # Added to kconfig CONFIG_SECTION_MISMATCH_WARN_ONLY=y # Added to kconfig CONFIG_PREVENT_FIRMWARE_BUILD=y # Added to kconfig CONFIG_CC_STACKPROTECTOR_STRONG=n # Added to kconfig CONFIG_GCC_PLUGINS=n # Added to kconfig CONFIG_LD_HEAD_STUB_CATCH=y # Added to kconfig CONFIG_TRIM_UNUSED_KSYMS=n # Added to kconfig CONFIG_UBSAN=n # < make -s -j 32 ARCH=powerpc O=/kisskb/build/linus-rand_powerpc-randconfig_powerpc-gcc9 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-9.2.0-nolibc/powerpc64-linux/bin/powerpc64-linux- help # make -s -j 32 ARCH=powerpc O=/kisskb/build/linus-rand_powerpc-randconfig_powerpc-gcc9 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-9.2.0-nolibc/powerpc64-linux/bin/powerpc64-linux- olddefconfig .config:5728:warning: override: reassigning to symbol STANDALONE .config:5735:warning: override: reassigning to symbol PREVENT_FIRMWARE_BUILD .config:5739:warning: override: reassigning to symbol TRIM_UNUSED_KSYMS .config:5740:warning: override: reassigning to symbol UBSAN # make -s -j 32 ARCH=powerpc O=/kisskb/build/linus-rand_powerpc-randconfig_powerpc-gcc9 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-9.2.0-nolibc/powerpc64-linux/bin/powerpc64-linux- /kisskb/src/arch/powerpc/mm/ptdump/hashpagetable.c: In function 'pseries_find': /kisskb/src/arch/powerpc/mm/ptdump/hashpagetable.c:262:18: error: 'H_SUCCESS' undeclared (first use in this function) 262 | if (lpar_rc != H_SUCCESS) | ^~~~~~~~~ /kisskb/src/arch/powerpc/mm/ptdump/hashpagetable.c:262:18: note: each undeclared identifier is reported only once for each function it appears in make[4]: *** [/kisskb/src/scripts/Makefile.build:268: arch/powerpc/mm/ptdump/hashpagetable.o] Error 1 make[3]: *** [/kisskb/src/scripts/Makefile.build:505: arch/powerpc/mm/ptdump] Error 2 make[3]: *** Waiting for unfinished jobs.... make[2]: *** [/kisskb/src/scripts/Makefile.build:505: arch/powerpc/mm] Error 2 make[2]: *** Waiting for unfinished jobs.... make[1]: *** [/kisskb/src/Makefile:1702: arch/powerpc] Error 2 make[1]: *** Waiting for unfinished jobs.... In file included from /kisskb/src/drivers/gpu/drm/amd/amdgpu/../display/dc/dm_services_types.h:29, from /kisskb/src/drivers/gpu/drm/amd/amdgpu/../display/dc/dm_services.h:37, from /kisskb/src/drivers/gpu/drm/amd/amdgpu/../display/dc/calcs/dcn_calcs.c:27: /kisskb/src/drivers/gpu/drm/amd/amdgpu/../display/dc/calcs/dcn_calcs.c: In function 'dcn_bw_apply_registry_override': /kisskb/src/drivers/gpu/drm/amd/amdgpu/../display/dc/os_types.h:64:3: error: implicit declaration of function 'enable_kernel_vsx'; did you mean 'enable_kernel_fp'? [-Werror=implicit-function-declaration] 64 | enable_kernel_vsx(); \ | ^~~~~~~~~~~~~~~~~ /kisskb/src/drivers/gpu/drm/amd/amdgpu/../display/dc/calcs/dcn_calcs.c:626:2: note: in expansion of macro 'DC_FP_START' 626 | DC_FP_START(); | ^~~~~~~~~~~ /kisskb/src/drivers/gpu/drm/amd/amdgpu/../display/dc/os_types.h:75:3: error: implicit declaration of function 'disable_kernel_vsx'; did you mean 'disable_kernel_fp'? [-Werror=implicit-function-declaration] 75 | disable_kernel_vsx(); \ | ^~~~~~~~~~~~~~~~~~ /kisskb/src/drivers/gpu/drm/amd/amdgpu/../display/dc/calcs/dcn_calcs.c:662:2: note: in expansion of macro 'DC_FP_END' 662 | DC_FP_END(); | ^~~~~~~~~ cc1: some warnings being treated as errors make[5]: *** [/kisskb/src/scripts/Makefile.build:267: drivers/gpu/drm/amd/amdgpu/../display/dc/calcs/dcn_calcs.o] Error 1 make[5]: *** Waiting for unfinished jobs.... make[4]: *** [/kisskb/src/scripts/Makefile.build:505: drivers/gpu/drm/amd/amdgpu] Error 2 make[3]: *** [/kisskb/src/scripts/Makefile.build:505: drivers/gpu/drm] Error 2 make[2]: *** [/kisskb/src/scripts/Makefile.build:505: drivers/gpu] Error 2 make[1]: *** [/kisskb/src/Makefile:1702: drivers] Error 2 make: *** [Makefile:180: sub-make] Error 2 Command 'make -s -j 32 ARCH=powerpc O=/kisskb/build/linus-rand_powerpc-randconfig_powerpc-gcc9 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-9.2.0-nolibc/powerpc64-linux/bin/powerpc64-linux- ' returned non-zero exit status 2 # rm -rf /kisskb/build/linus-rand_powerpc-randconfig_powerpc-gcc9 # Build took: 0:03:55.749909