# git rev-parse -q --verify 8a96efd384e6d0797a06a34503ebf21f133c74cb^{commit} 8a96efd384e6d0797a06a34503ebf21f133c74cb already have revision, skipping fetch # git checkout -q -f -B kisskb 8a96efd384e6d0797a06a34503ebf21f133c74cb # git clean -qxdf # < git log -1 # commit 8a96efd384e6d0797a06a34503ebf21f133c74cb # Author: Madhavan Srinivasan # Date: Tue Aug 27 15:46:35 2019 +0530 # # powerpc/imc: Dont create debugfs files for cpu-less nodes # # Commit <684d984038aa> ('powerpc/powernv: Add debugfs interface for # imc-mode and imc') added debugfs interface for the nest imc pmu # devices to support changing of different ucode modes. Primarily adding # this capability for debug. But when doing so, the code did not # consider the case of cpu-less nodes. So when reading the _cmd_ or # _mode_ file of a cpu-less node will create this crash. # # Faulting instruction address: 0xc0000000000d0d58 # Oops: Kernel access of bad area, sig: 11 [#1] # ... # CPU: 67 PID: 5301 Comm: cat Not tainted 5.2.0-rc6-next-20190627+ #19 # NIP: c0000000000d0d58 LR: c00000000049aa18 CTR:c0000000000d0d50 # REGS: c00020194548f9e0 TRAP: 0300 Not tainted (5.2.0-rc6-next-20190627+) # MSR: 9000000000009033 CR:28022822 XER: 00000000 # CFAR: c00000000049aa14 DAR: 000000000003fc08 DSISR:40000000 IRQMASK: 0 # ... # NIP imc_mem_get+0x8/0x20 # LR simple_attr_read+0x118/0x170 # Call Trace: # simple_attr_read+0x70/0x170 (unreliable) # debugfs_attr_read+0x6c/0xb0 # __vfs_read+0x3c/0x70 # vfs_read+0xbc/0x1a0 # ksys_read+0x7c/0x140 # system_call+0x5c/0x70 # # Patch fixes the issue with a more robust check for vbase to NULL. # # Before patch, ls output for the debugfs imc directory # # # ls /sys/kernel/debug/powerpc/imc/ # imc_cmd_0 imc_cmd_251 imc_cmd_253 imc_cmd_255 imc_mode_0 imc_mode_251 imc_mode_253 imc_mode_255 # imc_cmd_250 imc_cmd_252 imc_cmd_254 imc_cmd_8 imc_mode_250 imc_mode_252 imc_mode_254 imc_mode_8 # # After patch, ls output for the debugfs imc directory # # # ls /sys/kernel/debug/powerpc/imc/ # imc_cmd_0 imc_cmd_8 imc_mode_0 imc_mode_8 # # Actual bug here is that, we have two loops with potentially different # loop counts. That is, in imc_get_mem_addr_nest(), loop count is # obtained from the dt entries. But in case of export_imc_mode_and_cmd(), # loop was based on for_each_nid() count. Patch fixes the loop count in # latter based on the struct mem_info. Ideally it would be better to # have array size in struct imc_pmu. # # Fixes: 684d984038aa ('powerpc/powernv: Add debugfs interface for imc-mode and imc') # Reported-by: Qian Cai # Suggested-by: Michael Ellerman # Signed-off-by: Madhavan Srinivasan # Signed-off-by: Michael Ellerman # Link: https://lore.kernel.org/r/20190827101635.6942-1-maddy@linux.vnet.ibm.com # < /opt/cross/kisskb/korg/gcc-8.1.0-nolibc/powerpc64-linux/bin/powerpc64-linux-gcc --version # < /opt/cross/kisskb/korg/gcc-8.1.0-nolibc/powerpc64-linux/bin/powerpc64-linux-ld --version # < git log --format=%s --max-count=1 8a96efd384e6d0797a06a34503ebf21f133c74cb # < make -s -j 40 ARCH=powerpc O=/kisskb/build/powerpc-next_mpc85xx_defconfig+KVM_powerpc-gcc8 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-8.1.0-nolibc/powerpc64-linux/bin/powerpc64-linux- mpc85xx_defconfig # Added to kconfig CONFIG_PPC_E500MC=y # Added to kconfig CONFIG_VIRTUALIZATION=y # Added to kconfig CONFIG_KVM_E500MC=y # Added to kconfig # yes \n | make -s -j 40 ARCH=powerpc O=/kisskb/build/powerpc-next_mpc85xx_defconfig+KVM_powerpc-gcc8 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-8.1.0-nolibc/powerpc64-linux/bin/powerpc64-linux- oldconfig yes: standard output: Broken pipe # make -s -j 40 ARCH=powerpc O=/kisskb/build/powerpc-next_mpc85xx_defconfig+KVM_powerpc-gcc8 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-8.1.0-nolibc/powerpc64-linux/bin/powerpc64-linux- /kisskb/src/drivers/crypto/talitos.c: In function 'talitos_remove': /kisskb/src/drivers/crypto/talitos.c:3142:4: warning: this statement may fall through [-Wimplicit-fallthrough=] crypto_unregister_aead(&t_alg->algt.alg.aead); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /kisskb/src/drivers/crypto/talitos.c:3143:3: note: here case CRYPTO_ALG_TYPE_AHASH: ^~~~ /kisskb/src/drivers/dma/fsldma.c: In function 'fsl_dma_chan_probe': /kisskb/src/drivers/dma/fsldma.c:1165:26: warning: this statement may fall through [-Wimplicit-fallthrough=] chan->toggle_ext_pause = fsl_chan_toggle_ext_pause; ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~ /kisskb/src/drivers/dma/fsldma.c:1166:2: note: here case FSL_DMA_IP_83XX: ^~~~ In file included from /kisskb/src/include/linux/kernel.h:11, from /kisskb/src/include/linux/list.h:9, from /kisskb/src/include/linux/module.h:9, from /kisskb/src/drivers/net/ethernet/freescale/fs_enet/mac-scc.c:15: /kisskb/src/drivers/net/ethernet/freescale/fs_enet/mac-scc.c: In function 'allocate_bd': /kisskb/src/include/linux/err.h:22:49: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast] #define IS_ERR_VALUE(x) unlikely((unsigned long)(void *)(x) >= (unsigned long)-MAX_ERRNO) ^ /kisskb/src/include/linux/compiler.h:78:42: note: in definition of macro 'unlikely' # define unlikely(x) __builtin_expect(!!(x), 0) ^ /kisskb/src/drivers/net/ethernet/freescale/fs_enet/mac-scc.c:139:6: note: in expansion of macro 'IS_ERR_VALUE' if (IS_ERR_VALUE(fep->ring_mem_addr)) ^~~~~~~~~~~~ In file included from /kisskb/src/include/linux/acpi.h:15, from /kisskb/src/include/linux/i2c.h:13, from /kisskb/src/include/uapi/linux/fb.h:6, from /kisskb/src/include/linux/fb.h:6, from /kisskb/src/drivers/video/fbdev/fsl-diu-fb.c:20: /kisskb/src/drivers/video/fbdev/fsl-diu-fb.c: In function 'fsl_diu_ioctl': /kisskb/src/include/linux/device.h:1501:2: warning: this statement may fall through [-Wimplicit-fallthrough=] _dev_warn(dev, dev_fmt(fmt), ##__VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /kisskb/src/drivers/video/fbdev/fsl-diu-fb.c:1287:3: note: in expansion of macro 'dev_warn' dev_warn(info->dev, ^~~~~~~~ /kisskb/src/drivers/video/fbdev/fsl-diu-fb.c:1290:2: note: here case MFB_SET_PIXFMT: ^~~~ In file included from /kisskb/src/include/linux/acpi.h:15, from /kisskb/src/include/linux/i2c.h:13, from /kisskb/src/include/uapi/linux/fb.h:6, from /kisskb/src/include/linux/fb.h:6, from /kisskb/src/drivers/video/fbdev/fsl-diu-fb.c:20: /kisskb/src/include/linux/device.h:1501:2: warning: this statement may fall through [-Wimplicit-fallthrough=] _dev_warn(dev, dev_fmt(fmt), ##__VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /kisskb/src/drivers/video/fbdev/fsl-diu-fb.c:1296:3: note: in expansion of macro 'dev_warn' dev_warn(info->dev, ^~~~~~~~ /kisskb/src/drivers/video/fbdev/fsl-diu-fb.c:1299:2: note: here case MFB_GET_PIXFMT: ^~~~ /kisskb/src/arch/powerpc/boot/dts/fsl/mpc8541cds.dts:330.3-21: Warning (pci_device_bus_num): /pci@e0008000/i8259@19000:bus-range: PCI bus number 1 out of range, expected (0 - 0) /kisskb/src/arch/powerpc/boot/dts/fsl/mpc8555cds.dts:330.3-21: Warning (pci_device_bus_num): /pci@e0008000/i8259@19000:bus-range: PCI bus number 1 out of range, expected (0 - 0) INFO: Uncompressed kernel (size 0xde4a54) overlaps the address of the wrapper(0x400000) INFO: Fixing the link_address of wrapper to (0xe00000) INFO: Uncompressed kernel (size 0xde4a54) overlaps the address of the wrapper(0x400000) INFO: Fixing the link_address of wrapper to (0xe00000) INFO: Uncompressed kernel (size 0xde4a54) overlaps the address of the wrapper(0x400000) INFO: Fixing the link_address of wrapper to (0xe00000) INFO: Uncompressed kernel (size 0xde4a54) overlaps the address of the wrapper(0x400000) INFO: Fixing the link_address of wrapper to (0xe00000) INFO: Uncompressed kernel (size 0xde4a54) overlaps the address of the wrapper(0x400000) INFO: Fixing the link_address of wrapper to (0xe00000) INFO: Uncompressed kernel (size 0xde4a54) overlaps the address of the wrapper(0x400000) INFO: Fixing the link_address of wrapper to (0xe00000) INFO: Uncompressed kernel (size 0xde4a54) overlaps the address of the wrapper(0x400000) INFO: Fixing the link_address of wrapper to (0xe00000) INFO: Uncompressed kernel (size 0xde4a54) overlaps the address of the wrapper(0x400000) INFO: Fixing the link_address of wrapper to (0xe00000) INFO: Uncompressed kernel (size 0xde4a54) overlaps the address of the wrapper(0x400000) INFO: Fixing the link_address of wrapper to (0xe00000) INFO: Uncompressed kernel (size 0xde4a54) overlaps the address of the wrapper(0x400000) INFO: Fixing the link_address of wrapper to (0xe00000) INFO: Uncompressed kernel (size 0xde4a54) overlaps the address of the wrapper(0x400000) INFO: Fixing the link_address of wrapper to (0xe00000) INFO: Uncompressed kernel (size 0xde4a54) overlaps the address of the wrapper(0x400000) INFO: Fixing the link_address of wrapper to (0xe00000) INFO: Uncompressed kernel (size 0xde4a54) overlaps the address of the wrapper(0x400000) INFO: Fixing the link_address of wrapper to (0xe00000) INFO: Uncompressed kernel (size 0xde4a54) overlaps the address of the wrapper(0x400000) INFO: Fixing the link_address of wrapper to (0xe00000) INFO: Uncompressed kernel (size 0xde4a54) overlaps the address of the wrapper(0x400000) INFO: Fixing the link_address of wrapper to (0xe00000) INFO: Uncompressed kernel (size 0xdd4220) overlaps the address of the wrapper(0x400000) INFO: Fixing the link_address of wrapper to (0xe00000) Image Name: Linux-5.3.0-rc2-g8a96efd384e6 Created: Wed Sep 4 19:40:22 2019 Image Type: PowerPC Linux Kernel Image (gzip compressed) Data Size: 6549582 Bytes = 6396.08 KiB = 6.25 MiB Load Address: 00e00000 Entry Point: 00e00314 Image Name: Linux-5.3.0-rc2-g8a96efd384e6 Created: Wed Sep 4 19:40:22 2019 Image Type: PowerPC Linux Kernel Image (gzip compressed) Data Size: 6549495 Bytes = 6395.99 KiB = 6.25 MiB Load Address: 00e00000 Entry Point: 00e002b4 Image Name: Linux-5.3.0-rc2-g8a96efd384e6 Created: Wed Sep 4 19:40:22 2019 Image Type: PowerPC Linux Kernel Image (gzip compressed) Data Size: 6550615 Bytes = 6397.08 KiB = 6.25 MiB Load Address: 00e00000 Entry Point: 00e002b4 Image Name: Linux-5.3.0-rc2-g8a96efd384e6 Created: Wed Sep 4 19:40:22 2019 Image Type: PowerPC Linux Kernel Image (gzip compressed) Data Size: 6550336 Bytes = 6396.81 KiB = 6.25 MiB Load Address: 00e00000 Entry Point: 00e00314 Image Name: Linux-5.3.0-rc2-g8a96efd384e6 Created: Wed Sep 4 19:40:22 2019 Image Type: PowerPC Linux Kernel Image (gzip compressed) Data Size: 6550402 Bytes = 6396.88 KiB = 6.25 MiB Load Address: 00e00000 Entry Point: 00e002b4 Image Name: Linux-5.3.0-rc2-g8a96efd384e6 Created: Wed Sep 4 19:40:22 2019 Image Type: PowerPC Linux Kernel Image (gzip compressed) Data Size: 6549219 Bytes = 6395.72 KiB = 6.25 MiB Load Address: 00e00000 Entry Point: 00e002b4 Image Name: Linux-5.3.0-rc2-g8a96efd384e6 Created: Wed Sep 4 19:40:22 2019 Image Type: PowerPC Linux Kernel Image (gzip compressed) Data Size: 6549567 Bytes = 6396.06 KiB = 6.25 MiB Load Address: 00e00000 Entry Point: 00e00314 Image Name: Linux-5.3.0-rc2-g8a96efd384e6 Created: Wed Sep 4 19:40:22 2019 Image Type: PowerPC Linux Kernel Image (gzip compressed) Data Size: 6550401 Bytes = 6396.88 KiB = 6.25 MiB Load Address: 00e00000 Entry Point: 00e002b4 Image Name: Linux-5.3.0-rc2-g8a96efd384e6 Created: Wed Sep 4 19:40:22 2019 Image Type: PowerPC Linux Kernel Image (gzip compressed) Data Size: 6550475 Bytes = 6396.95 KiB = 6.25 MiB Load Address: 00e00000 Entry Point: 00e00314 Image Name: Linux-5.3.0-rc2-g8a96efd384e6 Created: Wed Sep 4 19:40:22 2019 Image Type: PowerPC Linux Kernel Image (gzip compressed) Data Size: 6550399 Bytes = 6396.87 KiB = 6.25 MiB Load Address: 00e00000 Entry Point: 00e002b4 Image Name: Linux-5.3.0-rc2-g8a96efd384e6 Created: Wed Sep 4 19:40:22 2019 Image Type: PowerPC Linux Kernel Image (gzip compressed) Data Size: 6550234 Bytes = 6396.71 KiB = 6.25 MiB Load Address: 00e00000 Entry Point: 00e002b4 Image Name: Linux-5.3.0-rc2-g8a96efd384e6 Created: Wed Sep 4 19:40:22 2019 Image Type: PowerPC Linux Kernel Image (gzip compressed) Data Size: 6549568 Bytes = 6396.06 KiB = 6.25 MiB Load Address: 00e00000 Entry Point: 00e00314 Image Name: Linux-5.3.0-rc2-g8a96efd384e6 Created: Wed Sep 4 19:40:22 2019 Image Type: PowerPC Linux Kernel Image (gzip compressed) Data Size: 6550592 Bytes = 6397.06 KiB = 6.25 MiB Load Address: 00e00000 Entry Point: 00e002b4 Image Name: Linux-5.3.0-rc2-g8a96efd384e6 Created: Wed Sep 4 19:40:22 2019 Image Type: PowerPC Linux Kernel Image (gzip compressed) Data Size: 6550357 Bytes = 6396.83 KiB = 6.25 MiB Load Address: 00e00000 Entry Point: 00e002b4 Image Name: Linux-5.3.0-rc2-g8a96efd384e6 Created: Wed Sep 4 19:40:22 2019 Image Type: PowerPC Linux Kernel Image (gzip compressed) Data Size: 6550605 Bytes = 6397.08 KiB = 6.25 MiB Load Address: 00e00000 Entry Point: 00e002b4 Image Name: Linux-5.3.0-rc2-g8a96efd384e6 Created: Wed Sep 4 19:40:22 2019 Image Type: PowerPC Linux Kernel Image (gzip compressed) Data Size: 6514286 Bytes = 6361.61 KiB = 6.21 MiB Load Address: 00000000 Entry Point: 00000000 Completed OK # rm -rf /kisskb/build/powerpc-next_mpc85xx_defconfig+KVM_powerpc-gcc8 # Build took: 0:01:29.874250