# git rev-parse -q --verify 2d83b0f30c1483a556c8aa1f7d891006fffcd5e0^{commit} 2d83b0f30c1483a556c8aa1f7d891006fffcd5e0 already have revision, skipping fetch # git checkout -q -f -B kisskb 2d83b0f30c1483a556c8aa1f7d891006fffcd5e0 # git clean -qxdf # < git log -1 # commit 2d83b0f30c1483a556c8aa1f7d891006fffcd5e0 # Author: Ard Biesheuvel # Date: Wed Oct 28 09:04:33 2020 +0100 # # powerpc: Avoid broken GCC __attribute__((optimize)) # # Commit 7053f80d9696 ("powerpc/64: Prevent stack protection in early # boot") introduced a couple of uses of __attribute__((optimize)) with # function scope, to disable the stack protector in some early boot # code. # # Unfortunately, and this is documented in the GCC man pages [0], # overriding function attributes for optimization is broken, and is only # supported for debug scenarios, not for production: the problem appears # to be that setting GCC -f flags using this method will cause it to # forget about some or all other optimization settings that have been # applied. # # So the only safe way to disable the stack protector is to disable it # for the entire source file. # # [0] https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html # # Fixes: 7053f80d9696 ("powerpc/64: Prevent stack protection in early boot") # Signed-off-by: Ard Biesheuvel # [mpe: Drop one remaining use of __nostackprotector, reported by snowpatch] # Signed-off-by: Michael Ellerman # Link: https://lore.kernel.org/r/20201028080433.26799-1-ardb@kernel.org # < /opt/cross/kisskb/korg/gcc-4.9.4-nolibc/powerpc64-linux/bin/powerpc64-linux-gcc --version # < /opt/cross/kisskb/korg/gcc-4.9.4-nolibc/powerpc64-linux/bin/powerpc64-linux-ld --version # < git log --format=%s --max-count=1 2d83b0f30c1483a556c8aa1f7d891006fffcd5e0 # < make -s -j 80 ARCH=powerpc O=/kisskb/build/powerpc-next-rand_powerpc-randconfig_powerpc-gcc4.9 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-4.9.4-nolibc/powerpc64-linux/bin/powerpc64-linux- randconfig KCONFIG_SEED=0x8FA4718A # Added to kconfig CONFIG_STANDALONE=y # Added to kconfig CONFIG_BUILD_DOCSRC=n # Added to kconfig CONFIG_MODULE_SIG=n # Added to kconfig CONFIG_CPU_BIG_ENDIAN=y # Added to kconfig CONFIG_PPC64=y # Added to kconfig CONFIG_PPC_DISABLE_WERROR=y # Added to kconfig CONFIG_SECTION_MISMATCH_WARN_ONLY=y # Added to kconfig CONFIG_PREVENT_FIRMWARE_BUILD=y # Added to kconfig CONFIG_CC_STACKPROTECTOR_STRONG=n # Added to kconfig CONFIG_GCC_PLUGINS=n # Added to kconfig CONFIG_LD_HEAD_STUB_CATCH=y # Added to kconfig CONFIG_TRIM_UNUSED_KSYMS=n # Added to kconfig CONFIG_UBSAN=n # < make -s -j 80 ARCH=powerpc O=/kisskb/build/powerpc-next-rand_powerpc-randconfig_powerpc-gcc4.9 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-4.9.4-nolibc/powerpc64-linux/bin/powerpc64-linux- help # make -s -j 80 ARCH=powerpc O=/kisskb/build/powerpc-next-rand_powerpc-randconfig_powerpc-gcc4.9 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-4.9.4-nolibc/powerpc64-linux/bin/powerpc64-linux- olddefconfig .config:5120:warning: override: reassigning to symbol MODULE_SIG .config:5121:warning: override: reassigning to symbol CPU_BIG_ENDIAN .config:5121:warning: override: CPU_BIG_ENDIAN changes choice state .config:5124:warning: override: reassigning to symbol SECTION_MISMATCH_WARN_ONLY .config:5125:warning: override: reassigning to symbol PREVENT_FIRMWARE_BUILD .config:5130:warning: override: reassigning to symbol UBSAN # make -s -j 80 ARCH=powerpc O=/kisskb/build/powerpc-next-rand_powerpc-randconfig_powerpc-gcc4.9 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-4.9.4-nolibc/powerpc64-linux/bin/powerpc64-linux- /kisskb/src/fs/btrfs/tree-checker.c: In function 'check_root_item': /kisskb/src/fs/btrfs/tree-checker.c:1056:9: warning: missing braces around initializer [-Wmissing-braces] struct btrfs_root_item ri = { 0 }; ^ /kisskb/src/fs/btrfs/tree-checker.c:1056:9: warning: (near initialization for 'ri.inode') [-Wmissing-braces] In file included from :0:0: /kisskb/src/drivers/media/platform/ti-vpe/cal.h: In function 'cal_read_field': /kisskb/src/include/linux/compiler_types.h:319:38: error: call to '__compiletime_assert_221' declared with attribute error: FIELD_GET: mask is not constant _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__) ^ /kisskb/src/include/linux/compiler_types.h:300:4: note: in definition of macro '__compiletime_assert' prefix ## suffix(); \ ^ /kisskb/src/include/linux/compiler_types.h:319:2: note: in expansion of macro '_compiletime_assert' _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__) ^ /kisskb/src/include/linux/build_bug.h:39:37: note: in expansion of macro 'compiletime_assert' #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg) ^ /kisskb/src/include/linux/bitfield.h:46:3: note: in expansion of macro 'BUILD_BUG_ON_MSG' BUILD_BUG_ON_MSG(!__builtin_constant_p(_mask), \ ^ /kisskb/src/include/linux/bitfield.h:108:3: note: in expansion of macro '__BF_FIELD_CHECK' __BF_FIELD_CHECK(_mask, _reg, 0U, "FIELD_GET: "); \ ^ /kisskb/src/drivers/media/platform/ti-vpe/cal.h:220:9: note: in expansion of macro 'FIELD_GET' return FIELD_GET(mask, cal_read(cal, offset)); ^ /kisskb/src/include/linux/compiler_types.h:319:38: error: call to '__compiletime_assert_222' declared with attribute error: FIELD_GET: mask is zero _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__) ^ /kisskb/src/include/linux/compiler_types.h:300:4: note: in definition of macro '__compiletime_assert' prefix ## suffix(); \ ^ /kisskb/src/include/linux/compiler_types.h:319:2: note: in expansion of macro '_compiletime_assert' _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__) ^ /kisskb/src/include/linux/build_bug.h:39:37: note: in expansion of macro 'compiletime_assert' #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg) ^ /kisskb/src/include/linux/bitfield.h:48:3: note: in expansion of macro 'BUILD_BUG_ON_MSG' BUILD_BUG_ON_MSG((_mask) == 0, _pfx "mask is zero"); \ ^ /kisskb/src/include/linux/bitfield.h:108:3: note: in expansion of macro '__BF_FIELD_CHECK' __BF_FIELD_CHECK(_mask, _reg, 0U, "FIELD_GET: "); \ ^ /kisskb/src/drivers/media/platform/ti-vpe/cal.h:220:9: note: in expansion of macro 'FIELD_GET' return FIELD_GET(mask, cal_read(cal, offset)); ^ /kisskb/src/include/linux/compiler_types.h:319:38: error: call to '__compiletime_assert_225' declared with attribute error: BUILD_BUG_ON failed: (((mask) + (1ULL << (__builtin_ffsll(mask) - 1))) & (((mask) + (1ULL << (__builtin_ffsll(mask) - 1))) - 1)) != 0 _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__) ^ /kisskb/src/include/linux/compiler_types.h:300:4: note: in definition of macro '__compiletime_assert' prefix ## suffix(); \ ^ /kisskb/src/include/linux/compiler_types.h:319:2: note: in expansion of macro '_compiletime_assert' _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__) ^ /kisskb/src/include/linux/build_bug.h:39:37: note: in expansion of macro 'compiletime_assert' #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg) ^ /kisskb/src/include/linux/build_bug.h:50:2: note: in expansion of macro 'BUILD_BUG_ON_MSG' BUILD_BUG_ON_MSG(condition, "BUILD_BUG_ON failed: " #condition) ^ /kisskb/src/include/linux/build_bug.h:21:2: note: in expansion of macro 'BUILD_BUG_ON' BUILD_BUG_ON(((n) & ((n) - 1)) != 0) ^ /kisskb/src/include/linux/bitfield.h:54:3: note: in expansion of macro '__BUILD_BUG_ON_NOT_POWER_OF_2' __BUILD_BUG_ON_NOT_POWER_OF_2((_mask) + \ ^ /kisskb/src/include/linux/bitfield.h:108:3: note: in expansion of macro '__BF_FIELD_CHECK' __BF_FIELD_CHECK(_mask, _reg, 0U, "FIELD_GET: "); \ ^ /kisskb/src/drivers/media/platform/ti-vpe/cal.h:220:9: note: in expansion of macro 'FIELD_GET' return FIELD_GET(mask, cal_read(cal, offset)); ^ make[5]: *** [/kisskb/src/scripts/Makefile.build:283: drivers/media/platform/ti-vpe/cal-camerarx.o] Error 1 make[5]: *** Waiting for unfinished jobs.... make[4]: *** [/kisskb/src/scripts/Makefile.build:500: drivers/media/platform/ti-vpe] Error 2 make[4]: *** Waiting for unfinished jobs.... make[3]: *** [/kisskb/src/scripts/Makefile.build:500: drivers/media/platform] Error 2 make[3]: *** Waiting for unfinished jobs.... make[2]: *** [/kisskb/src/scripts/Makefile.build:500: drivers/media] Error 2 make[2]: *** Waiting for unfinished jobs.... make[1]: *** [/kisskb/src/Makefile:1799: drivers] Error 2 make[1]: *** Waiting for unfinished jobs.... make: *** [Makefile:185: __sub-make] Error 2 Command 'make -s -j 80 ARCH=powerpc O=/kisskb/build/powerpc-next-rand_powerpc-randconfig_powerpc-gcc4.9 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-4.9.4-nolibc/powerpc64-linux/bin/powerpc64-linux- ' returned non-zero exit status 2 # rm -rf /kisskb/build/powerpc-next-rand_powerpc-randconfig_powerpc-gcc4.9 # Build took: 0:02:27.841891