arm64/for-kernelci build: 2 builds: 1 failed, 1 passed, 1 error, 1 warning (v6.2-rc6-115-gca72d58361ee)
Full Build Summary: https://kernelci.org/build/arm64/branch/for-kernelci/kernel/v6.2-rc6-115-gca...
Tree: arm64 Branch: for-kernelci Git Describe: v6.2-rc6-115-gca72d58361ee Git Commit: ca72d58361ee2e0d246385d21474b283f67416b9 Git URL: https://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux.git Built: 1 unique architecture
Build Failure Detected:
arm64: allmodconfig: (gcc-10) FAIL
Errors and Warnings Detected:
arm64: allmodconfig (gcc-10): 1 error, 1 warning
Errors summary:
1 include/linux/fortify-string.h:57:29: error: argument 2 null where non-null expected [-Werror=nonnull]
Warnings summary:
1 cc1: all warnings being treated as errors
================================================================================
Detailed per-defconfig build reports:
-------------------------------------------------------------------------------- allmodconfig (arm64, gcc-10) — FAIL, 1 error, 1 warning, 0 section mismatches
Errors: include/linux/fortify-string.h:57:29: error: argument 2 null where non-null expected [-Werror=nonnull]
Warnings: cc1: all warnings being treated as errors
-------------------------------------------------------------------------------- defconfig (arm64, gcc-10) — PASS, 0 errors, 0 warnings, 0 section mismatches
--- For more info write to info@kernelci.org
On Wed, Feb 01, 2023 at 01:59:33PM -0800, kernelci.org bot wrote:
arm64/for-kernelci build: 2 builds: 1 failed, 1 passed, 1 error, 1 warning (v6.2-rc6-115-gca72d58361ee)
Full Build Summary: https://kernelci.org/build/arm64/branch/for-kernelci/kernel/v6.2-rc6-115-gca...
Tree: arm64 Branch: for-kernelci Git Describe: v6.2-rc6-115-gca72d58361ee Git Commit: ca72d58361ee2e0d246385d21474b283f67416b9 Git URL: https://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux.git Built: 1 unique architecture
Build Failure Detected:
arm64: allmodconfig: (gcc-10) FAIL
Errors and Warnings Detected:
arm64: allmodconfig (gcc-10): 1 error, 1 warning
Errors summary:
1 include/linux/fortify-string.h:57:29: error: argument 2 null where non-null expected [-Werror=nonnull]
For some reason this shows with gcc-10 on arm64 allmodconfig but it's been around for some time. We only noticed it now due to the SLUB_TINY config that made it into 6.2-rc1 which disables KASAN. I can trigger it on 6.1 just by disabling KASAN after an allmodconfig.
The problem is the NULL 2nd argument passed to append_fifo_load_as_imm() in gen_split_key() in drivers/crypto/caam/key_gen.c. The error below looks sane to me and the key_gen.c needs fixing as you can't do a memcpy() from a NULL source pointer. But I have no clue how to fix it, so cc'ing the code author and crypto maintainer.
In file included from include/linux/string.h:253, from include/linux/bitmap.h:11, from include/linux/cpumask.h:12, from include/linux/smp.h:13, from arch/arm64/include/asm/arch_timer.h:18, from arch/arm64/include/asm/timex.h:8, from include/linux/timex.h:67, from include/linux/time32.h:13, from include/linux/time.h:60, from arch/arm64/include/asm/stat.h:12, from include/linux/stat.h:6, from include/linux/module.h:13, from drivers/crypto/caam/compat.h:10, from drivers/crypto/caam/key_gen.c:8: drivers/crypto/caam/desc_constr.h: In function ‘append_data.constprop’: include/linux/fortify-string.h:57:29: error: argument 2 null where non-null expected [-Werror=nonnull] 57 | #define __underlying_memcpy __builtin_memcpy | ^ include/linux/fortify-string.h:578:2: note: in expansion of macro ‘__underlying_memcpy’ 578 | __underlying_##op(p, q, __fortify_size); \ | ^~~~~~~~~~~~~ include/linux/fortify-string.h:623:26: note: in expansion of macro ‘__fortify_memcpy_chk’ 623 | #define memcpy(p, q, s) __fortify_memcpy_chk(p, q, s, \ | ^~~~~~~~~~~~~~~~~~~~ drivers/crypto/caam/desc_constr.h:167:3: note: in expansion of macro ‘memcpy’ 167 | memcpy(offset, data, len); | ^~~~~~ include/linux/fortify-string.h:57:29: note: in a call to built-in function ‘__builtin_memcpy’ 57 | #define __underlying_memcpy __builtin_memcpy | ^ include/linux/fortify-string.h:578:2: note: in expansion of macro ‘__underlying_memcpy’ 578 | __underlying_##op(p, q, __fortify_size); \ | ^~~~~~~~~~~~~ include/linux/fortify-string.h:623:26: note: in expansion of macro ‘__fortify_memcpy_chk’ 623 | #define memcpy(p, q, s) __fortify_memcpy_chk(p, q, s, \ | ^~~~~~~~~~~~~~~~~~~~ drivers/crypto/caam/desc_constr.h:167:3: note: in expansion of macro ‘memcpy’ 167 | memcpy(offset, data, len); | ^~~~~~ cc1: all warnings being treated as errors make[5]: *** [scripts/Makefile.build:252: drivers/crypto/caam/key_gen.o] Error 1
On Fri, Feb 03, 2023 at 06:26:09PM +0000, Catalin Marinas wrote:
On Wed, Feb 01, 2023 at 01:59:33PM -0800, kernelci.org bot wrote:
arm64/for-kernelci build: 2 builds: 1 failed, 1 passed, 1 error, 1 warning (v6.2-rc6-115-gca72d58361ee)
Full Build Summary: https://kernelci.org/build/arm64/branch/for-kernelci/kernel/v6.2-rc6-115-gca...
Tree: arm64 Branch: for-kernelci Git Describe: v6.2-rc6-115-gca72d58361ee Git Commit: ca72d58361ee2e0d246385d21474b283f67416b9 Git URL: https://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux.git Built: 1 unique architecture
Build Failure Detected:
arm64: allmodconfig: (gcc-10) FAIL
Errors and Warnings Detected:
arm64: allmodconfig (gcc-10): 1 error, 1 warning
Errors summary:
1 include/linux/fortify-string.h:57:29: error: argument 2 null where non-null expected [-Werror=nonnull]
For some reason this shows with gcc-10 on arm64 allmodconfig but it's been around for some time. We only noticed it now due to the SLUB_TINY config that made it into 6.2-rc1 which disables KASAN. I can trigger it on 6.1 just by disabling KASAN after an allmodconfig.
The problem is the NULL 2nd argument passed to append_fifo_load_as_imm() in gen_split_key() in drivers/crypto/caam/key_gen.c. The error below looks sane to me and the key_gen.c needs fixing as you can't do a memcpy() from a NULL source pointer. But I have no clue how to fix it, so cc'ing the code author and crypto maintainer.
Actually, we can conclude that gcc-10 is not smart enough and ignore this report. The call gen_split_key() has len == 0:
append_fifo_load_as_imm(desc, NULL, 0, LDST_CLASS_2_CCB | FIFOLD_TYPE_MSG | FIFOLD_TYPE_LAST2);
It ends up in append_data(), again with len == 0, which does:
if (len) /* avoid sparse warning: memcpy with byte count of 0 */ memcpy(offset, data, len);
So memcpy() should never get a NULL argument but gcc cannot figure it out. We could extend the check above to (len && data) but it's just for a compiler problem. I haven't seen this with gcc-12.
On Fri, Feb 03, 2023 at 09:40:30PM +0000, Catalin Marinas wrote:
Actually, we can conclude that gcc-10 is not smart enough and ignore this report. The call gen_split_key() has len == 0:
Yes. In any case, this should already be fixed in linux-next with
https://lore.kernel.org/lkml/f3e9add2210a46af99cf0fc79121c7db@AcuMS.aculab.c...
Please let me know if the problem persists with this patch.
Thanks,
On Mon, Feb 06, 2023 at 05:57:50PM +0800, Herbert Xu wrote:
On Fri, Feb 03, 2023 at 09:40:30PM +0000, Catalin Marinas wrote:
Actually, we can conclude that gcc-10 is not smart enough and ignore this report. The call gen_split_key() has len == 0:
Yes. In any case, this should already be fixed in linux-next with
https://lore.kernel.org/lkml/f3e9add2210a46af99cf0fc79121c7db@AcuMS.aculab.c...
Please let me know if the problem persists with this patch.
Thanks, good to know it's in -next. The patch above should clear the error, I did something similar locally just to check.
kernel-build-reports@lists.linaro.org