# 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 24 ARCH=powerpc O=/kisskb/build/powerpc-next_ppc64_defconfig_powerpc-gcc8 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-8.1.0-nolibc/powerpc64-linux/bin/powerpc64-linux- ppc64_defconfig # make -s -j 24 ARCH=powerpc O=/kisskb/build/powerpc-next_ppc64_defconfig_powerpc-gcc8 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-8.1.0-nolibc/powerpc64-linux/bin/powerpc64-linux- In file included from /kisskb/src/include/linux/kernel.h:15, from /kisskb/src/include/linux/list.h:9, from /kisskb/src/include/linux/kobject.h:19, from /kisskb/src/include/linux/device.h:16, from /kisskb/src/drivers/net/ethernet/ibm/ehea/ehea_main.c:17: /kisskb/src/drivers/net/ethernet/ibm/ehea/ehea_main.c: In function 'ehea_mem_notifier': /kisskb/src/include/linux/printk.h:311:2: warning: this statement may fall through [-Wimplicit-fallthrough=] printk(KERN_INFO pr_fmt(fmt), ##__VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /kisskb/src/drivers/net/ethernet/ibm/ehea/ehea_main.c:3253:3: note: in expansion of macro 'pr_info' pr_info("memory offlining canceled"); ^~~~~~~ /kisskb/src/drivers/net/ethernet/ibm/ehea/ehea_main.c:3256:2: note: here case MEM_ONLINE: ^~~~ /kisskb/src/drivers/scsi/cxlflash/main.c: In function 'send_afu_cmd': /kisskb/src/drivers/scsi/cxlflash/main.c:2347:6: warning: this statement may fall through [-Wimplicit-fallthrough=] if (rc) { ^ /kisskb/src/drivers/scsi/cxlflash/main.c:2357:2: note: here case -EAGAIN: ^~~~ /kisskb/src/drivers/scsi/cxlflash/main.c: In function 'term_intr': /kisskb/src/drivers/scsi/cxlflash/main.c:754:6: warning: this statement may fall through [-Wimplicit-fallthrough=] if (index == PRIMARY_HWQ) ^ /kisskb/src/drivers/scsi/cxlflash/main.c:756:2: note: here case UNMAP_TWO: ^~~~ /kisskb/src/drivers/scsi/cxlflash/main.c:757:3: warning: this statement may fall through [-Wimplicit-fallthrough=] cfg->ops->unmap_afu_irq(hwq->ctx_cookie, 2, hwq); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /kisskb/src/drivers/scsi/cxlflash/main.c:758:2: note: here case UNMAP_ONE: ^~~~ /kisskb/src/drivers/scsi/cxlflash/main.c:759:3: warning: this statement may fall through [-Wimplicit-fallthrough=] cfg->ops->unmap_afu_irq(hwq->ctx_cookie, 1, hwq); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /kisskb/src/drivers/scsi/cxlflash/main.c:760:2: note: here case FREE_IRQ: ^~~~ /kisskb/src/drivers/scsi/cxlflash/main.c: In function 'cxlflash_remove': /kisskb/src/drivers/scsi/cxlflash/main.c:975:3: warning: this statement may fall through [-Wimplicit-fallthrough=] cxlflash_release_chrdev(cfg); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ /kisskb/src/drivers/scsi/cxlflash/main.c:976:2: note: here case INIT_STATE_SCSI: ^~~~ /kisskb/src/drivers/scsi/cxlflash/main.c:978:3: warning: this statement may fall through [-Wimplicit-fallthrough=] scsi_remove_host(cfg->host); ^~~~~~~~~~~~~~~~~~~~~~~~~~~ /kisskb/src/drivers/scsi/cxlflash/main.c:979:2: note: here case INIT_STATE_AFU: ^~~~ /kisskb/src/drivers/scsi/cxlflash/main.c:980:3: warning: this statement may fall through [-Wimplicit-fallthrough=] term_afu(cfg); ^~~~~~~~~~~~~ /kisskb/src/drivers/scsi/cxlflash/main.c:981:2: note: here case INIT_STATE_PCI: ^~~~ /kisskb/src/drivers/scsi/cxlflash/main.c:983:3: warning: this statement may fall through [-Wimplicit-fallthrough=] pci_disable_device(pdev); ^~~~~~~~~~~~~~~~~~~~~~~~ /kisskb/src/drivers/scsi/cxlflash/main.c:984:2: note: here case INIT_STATE_NONE: ^~~~ /kisskb/src/drivers/scsi/cxlflash/main.c: In function 'num_hwqs_store': /kisskb/src/drivers/scsi/cxlflash/main.c:3018:6: warning: this statement may fall through [-Wimplicit-fallthrough=] if (cfg->state == STATE_NORMAL) ^ /kisskb/src/drivers/scsi/cxlflash/main.c:3020:2: note: here default: ^~~~~~~ /kisskb/src/drivers/scsi/ibmvscsi/ibmvfc.c: In function 'ibmvfc_npiv_login_done': /kisskb/src/drivers/scsi/ibmvscsi/ibmvfc.c:4022:3: warning: this statement may fall through [-Wimplicit-fallthrough=] ibmvfc_retry_host_init(vhost); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /kisskb/src/drivers/scsi/ibmvscsi/ibmvfc.c:4023:2: note: here case IBMVFC_MAD_DRIVER_FAILED: ^~~~ /kisskb/src/drivers/scsi/ibmvscsi/ibmvfc.c: In function 'ibmvfc_bsg_request': /kisskb/src/drivers/scsi/ibmvscsi/ibmvfc.c:1830:11: warning: this statement may fall through [-Wimplicit-fallthrough=] port_id = (bsg_request->rqst_data.h_els.port_id[0] << 16) | ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ (bsg_request->rqst_data.h_els.port_id[1] << 8) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ bsg_request->rqst_data.h_els.port_id[2]; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /kisskb/src/drivers/scsi/ibmvscsi/ibmvfc.c:1833:2: note: here case FC_BSG_RPT_ELS: ^~~~ /kisskb/src/drivers/scsi/ibmvscsi/ibmvfc.c:1838:11: warning: this statement may fall through [-Wimplicit-fallthrough=] port_id = (bsg_request->rqst_data.h_ct.port_id[0] << 16) | ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ (bsg_request->rqst_data.h_ct.port_id[1] << 8) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ bsg_request->rqst_data.h_ct.port_id[2]; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /kisskb/src/drivers/scsi/ibmvscsi/ibmvfc.c:1841:2: note: here case FC_BSG_RPT_CT: ^~~~ /kisskb/src/drivers/net/ethernet/toshiba/spider_net.c: In function 'spider_net_release_tx_chain': /kisskb/src/drivers/net/ethernet/toshiba/spider_net.c:783:7: warning: this statement may fall through [-Wimplicit-fallthrough=] if (!brutal) { ^ /kisskb/src/drivers/net/ethernet/toshiba/spider_net.c:792:3: note: here case SPIDER_NET_DESCR_RESPONSE_ERROR: ^~~~ /opt/cross/kisskb/korg/gcc-8.1.0-nolibc/powerpc64-linux/bin/powerpc64-linux-ld: warning: orphan section `.gnu.hash' from `linker stubs' being placed in section `.gnu.hash'. /opt/cross/kisskb/korg/gcc-8.1.0-nolibc/powerpc64-linux/bin/powerpc64-linux-ld: warning: orphan section `.gnu.hash' from `linker stubs' being placed in section `.gnu.hash'. /opt/cross/kisskb/korg/gcc-8.1.0-nolibc/powerpc64-linux/bin/powerpc64-linux-ld: warning: orphan section `.gnu.hash' from `linker stubs' being placed in section `.gnu.hash'. Completed OK # rm -rf /kisskb/build/powerpc-next_ppc64_defconfig_powerpc-gcc8 # Build took: 0:03:42.031776