# 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/gcc-4.6.3-nolibc/powerpc-linux/bin/powerpc-linux-gcc --version # < /opt/cross/kisskb/gcc-4.6.3-nolibc/powerpc-linux/bin/powerpc-linux-ld --version # < git log --format=%s --max-count=1 ab6f762f0f53162d41497708b33c9a3236d3609e # < make -s -j 48 ARCH=powerpc O=/kisskb/build/linus_pseries_defconfig_powerpc-gcc4.6 CROSS_COMPILE=/opt/cross/kisskb/gcc-4.6.3-nolibc/powerpc-linux/bin/powerpc-linux- pseries_defconfig # < make -s -j 48 ARCH=powerpc O=/kisskb/build/linus_pseries_defconfig_powerpc-gcc4.6 CROSS_COMPILE=/opt/cross/kisskb/gcc-4.6.3-nolibc/powerpc-linux/bin/powerpc-linux- help # make -s -j 48 ARCH=powerpc O=/kisskb/build/linus_pseries_defconfig_powerpc-gcc4.6 CROSS_COMPILE=/opt/cross/kisskb/gcc-4.6.3-nolibc/powerpc-linux/bin/powerpc-linux- olddefconfig # make -s -j 48 ARCH=powerpc O=/kisskb/build/linus_pseries_defconfig_powerpc-gcc4.6 CROSS_COMPILE=/opt/cross/kisskb/gcc-4.6.3-nolibc/powerpc-linux/bin/powerpc-linux- /kisskb/src/fs/proc/inode.c: In function 'proc_reg_open': /kisskb/src/include/linux/list.h:72:12: warning: 'pdeo' may be used uninitialized in this function [-Wuninitialized] /kisskb/src/fs/proc/inode.c:471:21: note: 'pdeo' was declared here /kisskb/src/kernel/printk/printk.c: In function 'devkmsg_sysctl_set_loglvl': /kisskb/src/kernel/printk/printk.c:204:16: warning: 'old' may be used uninitialized in this function [-Wuninitialized] /kisskb/src/kernel/trace/ftrace.c: In function 'pid_open': /kisskb/src/kernel/trace/ftrace.c:7166:6: warning: 'seq_ops' may be used uninitialized in this function [-Wuninitialized] /kisskb/src/kernel/trace/ftrace.c: In function 'pid_write': /kisskb/src/kernel/trace/ftrace.c:7261:22: warning: 'other_pids' may be used uninitialized in this function [-Wuninitialized] /kisskb/src/kernel/trace/ftrace.c:7244:23: warning: 'filtered_pids' may be used uninitialized in this function [-Wuninitialized] /kisskb/src/fs/ext4/extents.c: In function 'ext4_convert_unwritten_io_end_vec': /kisskb/src/fs/ext4/extents.c:4774:23: warning: 'ret' may be used uninitialized in this function [-Wuninitialized] /kisskb/src/mm/hugetlb.c: In function 'alloc_pool_huge_page': /kisskb/src/mm/hugetlb.c:1741:5: warning: 'page' may be used uninitialized in this function [-Wuninitialized] /kisskb/src/net/core/devlink.c: In function 'devlink_fmsg_prepare_skb': /kisskb/src/net/core/devlink.c:4957:6: warning: 'err' may be used uninitialized in this function [-Wuninitialized] /kisskb/src/drivers/tty/serial/8250/8250_core.c: In function 'univ8250_release_irq': /kisskb/src/drivers/tty/serial/8250/8250_core.c:247:18: warning: 'i' may be used uninitialized in this function [-Wuninitialized] /kisskb/src/drivers/tty/serial/8250/8250_core.c:227:19: note: 'i' was declared here /kisskb/src/kernel/trace/trace_events.c: In function 'event_create_dir': /kisskb/src/kernel/trace/trace_events.c:2189:6: warning: 'ret' may be used uninitialized in this function [-Wuninitialized] /kisskb/src/fs/nfsd/nfs4xdr.c: In function 'nfsd4_encode_components_esc': /kisskb/src/fs/nfsd/nfs4xdr.c:2151:9: warning: 'str' may be used uninitialized in this function [-Wuninitialized] /kisskb/src/fs/btrfs/backref.c: In function 'is_shared_data_backref': /kisskb/src/fs/btrfs/backref.c:394:9: warning: missing braces around initializer [-Wmissing-braces] /kisskb/src/fs/btrfs/backref.c:394:9: warning: (near initialization for 'target.rbnode') [-Wmissing-braces] /kisskb/src/fs/udf/unicode.c: In function 'udf_name_conv_char': /kisskb/src/fs/udf/unicode.c:132:8: warning: 'c' may be used uninitialized in this function [-Wuninitialized] /kisskb/src/fs/namei.c: In function 'handle_dots': /kisskb/src/fs/namei.c:1805:10: warning: 'inode' may be used uninitialized in this function [-Wuninitialized] /kisskb/src/fs/namei.c:1805:10: warning: 'seq' may be used uninitialized in this function [-Wuninitialized] /kisskb/src/drivers/usb/core/devio.c: In function 'async_completed': /kisskb/src/drivers/usb/core/devio.c:625:23: warning: 'errno' may be used uninitialized in this function [-Wuninitialized] /kisskb/src/net/bridge/br_netlink.c: In function 'br_process_vlan_info': /kisskb/src/net/bridge/br_netlink.c:571:6: warning: 'err' may be used uninitialized in this function [-Wuninitialized] /kisskb/src/drivers/net/tun.c: In function 'tun_get_user': /kisskb/src/drivers/net/tun.c:1801:30: warning: 'copylen' may be used uninitialized in this function [-Wuninitialized] /kisskb/src/drivers/net/tun.c:1714:46: warning: 'linear' may be used uninitialized in this function [-Wuninitialized] /kisskb/src/fs/io_uring.c: In function '__io_sqe_files_update': /kisskb/src/fs/io_uring.c:6673:13: warning: 'err' may be used uninitialized in this function [-Wuninitialized] Completed OK # rm -rf /kisskb/build/linus_pseries_defconfig_powerpc-gcc4.6 # Build took: 0:02:35.320255