# git rev-parse -q --verify bc13f05ffaf016d42536571c2e9173f85cefd47a^{commit} bc13f05ffaf016d42536571c2e9173f85cefd47a already have revision, skipping fetch # git checkout -q -f -B kisskb bc13f05ffaf016d42536571c2e9173f85cefd47a # git clean -qxdf # < git log -1 # commit bc13f05ffaf016d42536571c2e9173f85cefd47a # Author: Michael Ellerman # Date: Thu Feb 14 11:08:29 2019 +1100 # # powerpc/ptrace: Simplify vr_get/set() to avoid GCC warning # # GCC 8 warns about the logic in vr_get/set(), which with -Werror breaks # the build: # # In function ‘user_regset_copyin’, # inlined from ‘vr_set’ at arch/powerpc/kernel/ptrace.c:628:9: # include/linux/regset.h:295:4: error: ‘memcpy’ offset [-527, -529] is # out of the bounds [0, 16] of object ‘vrsave’ with type ‘union # ’ [-Werror=array-bounds] # arch/powerpc/kernel/ptrace.c: In function ‘vr_set’: # arch/powerpc/kernel/ptrace.c:623:5: note: ‘vrsave’ declared here # } vrsave; # # This has been identified as a regression in GCC, see GCC bug 88273. # # However we can avoid the warning and also simplify the logic and make # it more robust. # # Currently we pass -1 as end_pos to user_regset_copyout(). This says # "copy up to the end of the regset". # # The definition of the regset is: # [REGSET_VMX] = { # .core_note_type = NT_PPC_VMX, .n = 34, # .size = sizeof(vector128), .align = sizeof(vector128), # .active = vr_active, .get = vr_get, .set = vr_set # }, # # The end is calculated as (n * size), ie. 34 * sizeof(vector128). # # In vr_get/set() we pass start_pos as 33 * sizeof(vector128), meaning # we can copy up to sizeof(vector128) into/out-of vrsave. # # The on-stack vrsave is defined as: # union { # elf_vrreg_t reg; # u32 word; # } vrsave; # # And elf_vrreg_t is: # typedef __vector128 elf_vrreg_t; # # So there is no bug, but we rely on all those sizes lining up, # otherwise we would have a kernel stack exposure/overwrite on our # hands. # # Rather than relying on that we can pass an explict end_pos based on # the sizeof(vrsave). The result should be exactly the same but it's # more obviously not over-reading/writing the stack and it avoids the # compiler warning. # # Reported-by: Meelis Roos # Reported-by: Mathieu Malaterre # Cc: stable@vger.kernel.org # Signed-off-by: Michael Ellerman # < /opt/cross/kisskb/korg/gcc-5.5.0-nolibc/powerpc64-linux/bin/powerpc64-linux-gcc --version # < /opt/cross/kisskb/korg/gcc-5.5.0-nolibc/powerpc64-linux/bin/powerpc64-linux-ld --version # < git log --format=%s --max-count=1 bc13f05ffaf016d42536571c2e9173f85cefd47a # < make -s -j 48 ARCH=powerpc O=/kisskb/build/powerpc-next_ppc44x_defconfig_powerpc-gcc5 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-5.5.0-nolibc/powerpc64-linux/bin/powerpc64-linux- ppc44x_defconfig # make -s -j 48 ARCH=powerpc O=/kisskb/build/powerpc-next_ppc44x_defconfig_powerpc-gcc5 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-5.5.0-nolibc/powerpc64-linux/bin/powerpc64-linux- /kisskb/src/arch/powerpc/boot/dts/virtex440-ml510.dts:335.37-439.6: Warning (pci_bridge): /plb@0/plbv46-pci@85e00000: node name is not "pci" or "pcie" arch/powerpc/boot/dts/virtex440-ml510.dtb: Warning (pci_device_bus_num): Failed prerequisite 'pci_bridge' /kisskb/src/arch/powerpc/boot/dts/katmai.dts:322.26-361.5: Warning (pci_bridge): /plb/pciex@d00000000: node name is not "pci" or "pcie" /kisskb/src/arch/powerpc/boot/dts/katmai.dts:363.26-402.5: Warning (pci_bridge): /plb/pciex@d20000000: node name is not "pci" or "pcie" /kisskb/src/arch/powerpc/boot/dts/katmai.dts:404.26-443.5: Warning (pci_bridge): /plb/pciex@d40000000: node name is not "pci" or "pcie" arch/powerpc/boot/dts/katmai.dtb: Warning (pci_device_bus_num): Failed prerequisite 'pci_bridge' INFO: Uncompressed kernel (size 0x54f9e0) overlaps the address of the wrapper(0x400000) INFO: Fixing the link_address of wrapper to (0x600000) INFO: Uncompressed kernel (size 0x54f9e0) overlaps the address of the wrapper(0x400000) INFO: Fixing the link_address of wrapper to (0x600000) INFO: Uncompressed kernel (size 0x54f9e0) overlaps the address of the wrapper(0x400000) INFO: Fixing the link_address of wrapper to (0x600000) INFO: Uncompressed kernel (size 0x54f9e0) overlaps the address of the wrapper(0x400000) INFO: Fixing the link_address of wrapper to (0x600000) INFO: Uncompressed kernel (size 0x54f9e0) overlaps the address of the wrapper(0x400000) INFO: Fixing the link_address of wrapper to (0x600000) INFO: Uncompressed kernel (size 0x54f9e0) overlaps the address of the wrapper(0x400000) INFO: Fixing the link_address of wrapper to (0x600000) INFO: Uncompressed kernel (size 0x54f9e0) overlaps the address of the wrapper(0x400000) INFO: Fixing the link_address of wrapper to (0x600000) INFO: Uncompressed kernel (size 0x54f9e0) overlaps the address of the wrapper(0x400000) INFO: Fixing the link_address of wrapper to (0x600000) INFO: Uncompressed kernel (size 0x54f9e0) overlaps the address of the wrapper(0x400000) INFO: Fixing the link_address of wrapper to (0x600000) INFO: Uncompressed kernel (size 0x53f2c8) overlaps the address of the wrapper(0x400000) INFO: Fixing the link_address of wrapper to (0x600000) INFO: Uncompressed kernel (size 0x54f9e0) overlaps the address of the wrapper(0x400000) INFO: Fixing the link_address of wrapper to (0x600000) INFO: Uncompressed kernel (size 0x54f9e0) overlaps the address of the wrapper(0x400000) INFO: Fixing the link_address of wrapper to (0x600000) Image Name: Linux-5.0.0-rc2-gbc13f05ffaf0 Created: Thu Feb 14 20:22:12 2019 Image Type: PowerPC Linux Kernel Image (gzip compressed) Data Size: 2710847 Bytes = 2647.31 KiB = 2.59 MiB Load Address: 00000000 Entry Point: 00000000 Image Name: Linux-5.0.0-rc2-gbc13f05ffaf0 Created: Thu Feb 14 20:22:12 2019 Image Type: PowerPC Linux Kernel Image (gzip compressed) Data Size: 2743415 Bytes = 2679.12 KiB = 2.62 MiB Load Address: 00600000 Entry Point: 00601514 Image Name: Linux-5.0.0-rc2-gbc13f05ffaf0 Created: Thu Feb 14 20:22:12 2019 Image Type: PowerPC Linux Kernel Image (gzip compressed) Data Size: 2742816 Bytes = 2678.53 KiB = 2.62 MiB Load Address: 00600000 Entry Point: 00601534 Image Name: Linux-5.0.0-rc2-gbc13f05ffaf0 Created: Thu Feb 14 20:22:12 2019 Image Type: PowerPC Linux Kernel Image (gzip compressed) Data Size: 2742730 Bytes = 2678.45 KiB = 2.62 MiB Load Address: 00600000 Entry Point: 006001b8 Image Name: Linux-5.0.0-rc2-gbc13f05ffaf0 Created: Thu Feb 14 20:22:12 2019 Image Type: PowerPC Linux Kernel Image (gzip compressed) Data Size: 2743384 Bytes = 2679.09 KiB = 2.62 MiB Load Address: 00600000 Entry Point: 00601534 Image Name: Linux-5.0.0-rc2-gbc13f05ffaf0 Created: Thu Feb 14 20:22:12 2019 Image Type: PowerPC Linux Kernel Image (gzip compressed) Data Size: 2742823 Bytes = 2678.54 KiB = 2.62 MiB Load Address: 00600000 Entry Point: 00601544 Image Name: Linux-5.0.0-rc2-gbc13f05ffaf0 Created: Thu Feb 14 20:22:12 2019 Image Type: PowerPC Linux Kernel Image (gzip compressed) Data Size: 2742782 Bytes = 2678.50 KiB = 2.62 MiB Load Address: 00600000 Entry Point: 00601524 Image Name: Linux-5.0.0-rc2-gbc13f05ffaf0 Created: Thu Feb 14 20:22:12 2019 Image Type: PowerPC Linux Kernel Image (gzip compressed) Data Size: 2743322 Bytes = 2679.03 KiB = 2.62 MiB Load Address: 00600000 Entry Point: 006000c4 Image Name: Linux-5.0.0-rc2-gbc13f05ffaf0 Created: Thu Feb 14 20:22:12 2019 Image Type: PowerPC Linux Kernel Image (gzip compressed) Data Size: 2742703 Bytes = 2678.42 KiB = 2.62 MiB Load Address: 00600000 Entry Point: 00601534 Image Name: Linux-5.0.0-rc2-gbc13f05ffaf0 Created: Thu Feb 14 20:22:13 2019 Image Type: PowerPC Linux Kernel Image (gzip compressed) Data Size: 2742975 Bytes = 2678.69 KiB = 2.62 MiB Load Address: 00600000 Entry Point: 0060152c Completed OK # rm -rf /kisskb/build/powerpc-next_ppc44x_defconfig_powerpc-gcc5 # Build took: 0:00:45.389822