# git rev-parse -q --verify 8604895a34d92f5e186ceb931b0d1b384030ea3d^{commit} 8604895a34d92f5e186ceb931b0d1b384030ea3d already have revision, skipping fetch # git checkout -q -f -B kisskb 8604895a34d92f5e186ceb931b0d1b384030ea3d # git clean -qxdf # < git log -1 # commit 8604895a34d92f5e186ceb931b0d1b384030ea3d # Author: Michael Bringmann # Date: Thu Sep 20 11:45:13 2018 -0500 # # powerpc/pseries: Fix unitialized timer reset on migration # # After migration of a powerpc LPAR, the kernel executes code to # update the system state to reflect new platform characteristics. # # Such changes include modifications to device tree properties provided # to the system by PHYP. Property notifications received by the # post_mobility_fixup() code are passed along to the kernel in general # through a call to of_update_property() which in turn passes such # events back to all modules through entries like the '.notifier_call' # function within the NUMA module. # # When the NUMA module updates its state, it resets its event timer. If # this occurs after a previous call to stop_topology_update() or on a # system without VPHN enabled, the code runs into an unitialized timer # structure and crashes. This patch adds a safety check along this path # toward the problem code. # # An example crash log is as follows. # # ibmvscsi 30000081: Re-enabling adapter! # ------------[ cut here ]------------ # kernel BUG at kernel/time/timer.c:958! # Oops: Exception in kernel mode, sig: 5 [#1] # LE SMP NR_CPUS=2048 NUMA pSeries # Modules linked in: nfsv3 nfs_acl nfs tcp_diag udp_diag inet_diag lockd unix_diag af_packet_diag netlink_diag grace fscache sunrpc xts vmx_crypto pseries_rng sg binfmt_misc ip_tables xfs libcrc32c sd_mod ibmvscsi ibmveth scsi_transport_srp dm_mirror dm_region_hash dm_log dm_mod # CPU: 11 PID: 3067 Comm: drmgr Not tainted 4.17.0+ #179 # ... # NIP mod_timer+0x4c/0x400 # LR reset_topology_timer+0x40/0x60 # Call Trace: # 0xc0000003f9407830 (unreliable) # reset_topology_timer+0x40/0x60 # dt_update_callback+0x100/0x120 # notifier_call_chain+0x90/0x100 # __blocking_notifier_call_chain+0x60/0x90 # of_property_notify+0x90/0xd0 # of_update_property+0x104/0x150 # update_dt_property+0xdc/0x1f0 # pseries_devicetree_update+0x2d0/0x510 # post_mobility_fixup+0x7c/0xf0 # migration_store+0xa4/0xc0 # kobj_attr_store+0x30/0x60 # sysfs_kf_write+0x64/0xa0 # kernfs_fop_write+0x16c/0x240 # __vfs_write+0x40/0x200 # vfs_write+0xc8/0x240 # ksys_write+0x5c/0x100 # system_call+0x58/0x6c # # Fixes: 5d88aa85c00b ("powerpc/pseries: Update CPU maps when device tree is updated") # Cc: stable@vger.kernel.org # v3.10+ # Signed-off-by: Michael Bringmann # Signed-off-by: Michael Ellerman # < /opt/cross/kisskb/gcc-4.6.3-nolibc/powerpc-linux/bin/powerpc-linux-gcc --version # < git log --format=%s --max-count=1 8604895a34d92f5e186ceb931b0d1b384030ea3d # < make -s -j 48 ARCH=powerpc O=/kisskb/build/powerpc-fixes_pseries_defconfig_powerpc 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/powerpc-fixes_pseries_defconfig_powerpc CROSS_COMPILE=/opt/cross/kisskb/gcc-4.6.3-nolibc/powerpc-linux/bin/powerpc-linux- /kisskb/src/kernel/cgroup/cgroup-v1.c: In function 'cgroup1_mount': /kisskb/src/kernel/cgroup/cgroup-v1.c:1256:20: warning: 'root' may be used uninitialized in this function [-Wuninitialized] /kisskb/src/drivers/base/regmap/regmap.c: In function 'regmap_raw_read': /kisskb/src/drivers/base/regmap/regmap.c:2511:6: warning: 'ret' may be used uninitialized in this function [-Wuninitialized] /kisskb/src/mm/swap_state.c: In function '__add_to_swap_cache': /kisskb/src/mm/swap_state.c:135:5: warning: 'error' may be used uninitialized in this function [-Wuninitialized] /kisskb/src/drivers/base/regmap/regmap.c: In function '_regmap_raw_write': /kisskb/src/drivers/base/regmap/regmap.c:1833:6: 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:1433:5: warning: 'page' may be used uninitialized in this function [-Wuninitialized] /kisskb/src/kernel/printk/printk.c: In function 'devkmsg_sysctl_set_loglvl': /kisskb/src/kernel/printk/printk.c:185:16: warning: 'old' may be used uninitialized in this function [-Wuninitialized] /kisskb/src/net/bridge/br_netlink.c: In function 'br_afspec': /kisskb/src/net/bridge/br_netlink.c:647:7: warning: 'err' may be used uninitialized in this function [-Wuninitialized] /kisskb/src/drivers/i2c/i2c-core-base.c: In function 'i2c_generic_scl_recovery': /kisskb/src/drivers/i2c/i2c-core-base.c:235:5: warning: 'ret' may be used uninitialized in this function [-Wuninitialized] /kisskb/src/fs/proc/inode.c: In function 'proc_reg_open': /kisskb/src/include/linux/list.h:65:12: warning: 'pdeo' may be used uninitialized in this function [-Wuninitialized] /kisskb/src/fs/proc/inode.c:341:21: note: 'pdeo' was declared here /kisskb/src/drivers/tty/serial/8250/8250_core.c: In function 'univ8250_release_irq': /kisskb/src/drivers/tty/serial/8250/8250_core.c:251:18: warning: 'i' may be used uninitialized in this function [-Wuninitialized] /kisskb/src/drivers/tty/serial/8250/8250_core.c:231:19: note: 'i' was declared here /kisskb/src/fs/nfsd/nfs4xdr.c: In function 'nfsd4_encode_components_esc': /kisskb/src/fs/nfsd/nfs4xdr.c:2069:9: warning: 'str' 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:1836:30: warning: 'copylen' may be used uninitialized in this function [-Wuninitialized] /kisskb/src/drivers/net/tun.c:1746:46: warning: 'linear' may be used uninitialized in this function [-Wuninitialized] /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] Completed OK # rm -rf /kisskb/build/powerpc-fixes_pseries_defconfig_powerpc # Build took: 0:02:26.233501