arm64/for-kernelci build: 2 builds: 1 failed, 1 passed, 1 error, 1 warning (v6.2-rc6-115-gca72d58361ee)

Catalin Marinas catalin.marinas at arm.com
Fri Feb 3 13:40:30 PST 2023


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-gca72d58361ee/
> > 
> > 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.

-- 
Catalin



More information about the linux-arm-kernel mailing list