* [linux-next:master 8478/11953] lib/stackinit_kunit.c:259:8: warning: Excessive padding in 'struct test_big_hole' (124 padding bytes, where 60 is optimal).
@ 2022-03-15 7:46 kernel test robot
0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2022-03-15 7:46 UTC (permalink / raw)
To: kbuild
[-- Attachment #1: Type: text/plain, Size: 42822 bytes --]
CC: llvm(a)lists.linux.dev
CC: kbuild-all(a)lists.01.org
BCC: lkp(a)intel.com
CC: Linux Memory Management List <linux-mm@kvack.org>
TO: Kees Cook <keescook@chromium.org>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
head: 71941773e143369a73c9c4a3b62fbb60736a1182
commit: 8d60400704e503ded9f0c2ea32c2303d22955888 [8478/11953] lib: stackinit: Convert to KUnit
:::::: branch date: 5 days ago
:::::: commit date: 2 weeks ago
config: mips-randconfig-c004-20220302 (https://download.01.org/0day-ci/archive/20220315/202203151502.kyJFS2EG-lkp(a)intel.com/config)
compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project d271fc04d5b97b12e6b797c6067d3c96a8d7470e)
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# install mips cross compiling tool for clang build
# apt-get install binutils-mips-linux-gnu
# https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/?id=8d60400704e503ded9f0c2ea32c2303d22955888
git remote add linux-next https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
git fetch --no-tags linux-next master
git checkout 8d60400704e503ded9f0c2ea32c2303d22955888
# save the config file to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=mips clang-analyzer
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
clang-analyzer warnings: (new ones prefixed by >>)
kernel/rcu/rcuscale.c:431:3: note: Taking true branch
if (gp_async) {
^
kernel/rcu/rcuscale.c:433:9: note: 'rhp' is non-null
if (!rhp)
^~~
kernel/rcu/rcuscale.c:433:4: note: Taking false branch
if (!rhp)
^
kernel/rcu/rcuscale.c:435:8: note: 'rhp' is non-null
if (rhp && atomic_read(this_cpu_ptr(&n_async_inflight)) < gp_async_max) {
^~~
kernel/rcu/rcuscale.c:435:8: note: Left side of '&&' is true
kernel/rcu/rcuscale.c:435:27: note: Loop condition is false. Exiting loop
if (rhp && atomic_read(this_cpu_ptr(&n_async_inflight)) < gp_async_max) {
^
include/linux/percpu-defs.h:265:27: note: expanded from macro 'this_cpu_ptr'
#define this_cpu_ptr(ptr) raw_cpu_ptr(ptr)
^
include/linux/percpu-defs.h:264:26: note: expanded from macro 'raw_cpu_ptr'
#define raw_cpu_ptr(ptr) per_cpu_ptr(ptr, 0)
^
include/linux/percpu-defs.h:263:47: note: expanded from macro 'per_cpu_ptr'
#define per_cpu_ptr(ptr, cpu) ({ (void)(cpu); VERIFY_PERCPU_PTR(ptr); })
^
include/linux/percpu-defs.h:259:2: note: expanded from macro 'VERIFY_PERCPU_PTR'
__verify_pcpu_ptr(__p); \
^
include/linux/percpu-defs.h:217:37: note: expanded from macro '__verify_pcpu_ptr'
#define __verify_pcpu_ptr(ptr) \
^
kernel/rcu/rcuscale.c:435:15: note: Assuming the condition is false
if (rhp && atomic_read(this_cpu_ptr(&n_async_inflight)) < gp_async_max) {
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
kernel/rcu/rcuscale.c:435:4: note: Taking false branch
if (rhp && atomic_read(this_cpu_ptr(&n_async_inflight)) < gp_async_max) {
^
kernel/rcu/rcuscale.c:439:15: note: Assuming the condition is false
} else if (!kthread_should_stop()) {
^~~~~~~~~~~~~~~~~~~~~~
kernel/rcu/rcuscale.c:439:11: note: Taking false branch
} else if (!kthread_should_stop()) {
^
kernel/rcu/rcuscale.c:443:5: note: Attempt to free released memory
kfree(rhp); /* Because we are stopping. */
^~~~~~~~~~
Suppressed 1 warnings (1 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
1 warning generated.
Suppressed 1 warnings (1 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
1 warning generated.
Suppressed 1 warnings (1 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
2 warnings generated.
Suppressed 2 warnings (2 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
2 warnings generated.
Suppressed 2 warnings (2 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
1 warning generated.
Suppressed 1 warnings (1 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
1 warning generated.
Suppressed 1 warnings (1 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
1 warning generated.
Suppressed 1 warnings (1 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
1 warning generated.
Suppressed 1 warnings (1 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
1 warning generated.
Suppressed 1 warnings (1 with check filters).
1 warning generated.
Suppressed 1 warnings (1 with check filters).
2 warnings generated.
Suppressed 2 warnings (1 in non-user code, 1 with check filters).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
1 warning generated.
Suppressed 1 warnings (1 with check filters).
2 warnings generated.
Suppressed 2 warnings (1 in non-user code, 1 with check filters).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
1 warning generated.
Suppressed 1 warnings (1 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
1 warning generated.
Suppressed 1 warnings (1 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
1 warning generated.
Suppressed 1 warnings (1 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
1 warning generated.
Suppressed 1 warnings (1 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
3 warnings generated.
Suppressed 3 warnings (1 in non-user code, 2 with check filters).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
134 warnings generated.
>> lib/stackinit_kunit.c:259:8: warning: Excessive padding in 'struct test_big_hole' (124 padding bytes, where 60 is optimal).
Optimal fields order:
four,
one,
two,
three,
consider reordering the fields or adding explicit padding members [clang-analyzer-optin.performance.Padding]
struct test_big_hole {
~~~~~~~^~~~~~~~~~~~~~~
lib/stackinit_kunit.c:259:8: note: Excessive padding in 'struct test_big_hole' (124 padding bytes, where 60 is optimal). Optimal fields order: four, one, two, three, consider reordering the fields or adding explicit padding members
struct test_big_hole {
~~~~~~~^~~~~~~~~~~~~~~
>> lib/stackinit_kunit.c:333:1: warning: Address of stack memory associated with local variable 'var' is still referred to by the global variable 'fill_start' upon returning to the caller. This will be a dangling reference [clang-analyzer-core.StackAddressEscape]
DEFINE_SCALAR_TESTS(zero, ALWAYS_PASS);
^
lib/stackinit_kunit.c:309:3: note: expanded from macro 'DEFINE_SCALAR_TESTS'
DEFINE_SCALAR_TEST(u8, init, xfail); \
^
lib/stackinit_kunit.c:305:3: note: expanded from macro 'DEFINE_SCALAR_TEST'
DEFINE_TEST(name ## _ ## init, name, SCALAR, \
^
lib/stackinit_kunit.c:237:2: note: expanded from macro 'DEFINE_TEST'
return (int)buf[0] | (int)buf[sizeof(buf) - 1]; \
^
lib/stackinit_kunit.c:333:1: note: Taking false branch
DEFINE_SCALAR_TESTS(zero, ALWAYS_PASS);
^
lib/stackinit_kunit.c:309:3: note: expanded from macro 'DEFINE_SCALAR_TESTS'
DEFINE_SCALAR_TEST(u8, init, xfail); \
^
lib/stackinit_kunit.c:305:3: note: expanded from macro 'DEFINE_SCALAR_TEST'
DEFINE_TEST(name ## _ ## init, name, SCALAR, \
^
lib/stackinit_kunit.c:238:10: note: expanded from macro 'DEFINE_TEST'
} \
^
note: (skipping 3 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all)
include/linux/compiler_types.h:346:2: note: expanded from macro 'compiletime_assert'
_compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
^
include/linux/compiler_types.h:334:2: note: expanded from macro '_compiletime_assert'
__compiletime_assert(condition, msg, prefix, suffix)
^
include/linux/compiler_types.h:326:3: note: expanded from macro '__compiletime_assert'
if (!(condition)) \
^
lib/stackinit_kunit.c:333:1: note: Loop condition is false. Exiting loop
DEFINE_SCALAR_TESTS(zero, ALWAYS_PASS);
^
lib/stackinit_kunit.c:309:3: note: expanded from macro 'DEFINE_SCALAR_TESTS'
DEFINE_SCALAR_TEST(u8, init, xfail); \
^
lib/stackinit_kunit.c:305:3: note: expanded from macro 'DEFINE_SCALAR_TEST'
DEFINE_TEST(name ## _ ## init, name, SCALAR, \
^
lib/stackinit_kunit.c:238:10: note: expanded from macro 'DEFINE_TEST'
} \
^
note: (skipping 3 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all)
include/linux/compiler_types.h:346:2: note: expanded from macro 'compiletime_assert'
_compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
^
include/linux/compiler_types.h:334:2: note: expanded from macro '_compiletime_assert'
__compiletime_assert(condition, msg, prefix, suffix)
^
include/linux/compiler_types.h:318:2: note: expanded from macro '__compiletime_assert'
do { \
^
lib/stackinit_kunit.c:333:1: note: Calling 'leaf_u8_zero'
DEFINE_SCALAR_TESTS(zero, ALWAYS_PASS);
^
lib/stackinit_kunit.c:309:3: note: expanded from macro 'DEFINE_SCALAR_TESTS'
DEFINE_SCALAR_TEST(u8, init, xfail); \
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
lib/stackinit_kunit.c:305:3: note: expanded from macro 'DEFINE_SCALAR_TEST'
DEFINE_TEST(name ## _ ## init, name, SCALAR, \
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
lib/stackinit_kunit.c:238:10: note: expanded from macro 'DEFINE_TEST'
} \
^
lib/stackinit_kunit.c:163:12: note: expanded from macro '\DEFINE_TEST_DRIVER'
ignored = leaf_ ##name((unsigned long)&ignored, 1, \
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
note: expanded from here
lib/stackinit_kunit.c:333:1: note: 'fill' is true
DEFINE_SCALAR_TESTS(zero, ALWAYS_PASS);
^
lib/stackinit_kunit.c:309:3: note: expanded from macro 'DEFINE_SCALAR_TESTS'
DEFINE_SCALAR_TEST(u8, init, xfail); \
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
lib/stackinit_kunit.c:305:3: note: expanded from macro 'DEFINE_SCALAR_TEST'
DEFINE_TEST(name ## _ ## init, name, SCALAR, \
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
lib/stackinit_kunit.c:223:6: note: expanded from macro 'DEFINE_TEST'
if (fill) { \
^~~~
lib/stackinit_kunit.c:333:1: note: Taking true branch
DEFINE_SCALAR_TESTS(zero, ALWAYS_PASS);
^
lib/stackinit_kunit.c:309:3: note: expanded from macro 'DEFINE_SCALAR_TESTS'
DEFINE_SCALAR_TEST(u8, init, xfail); \
^
lib/stackinit_kunit.c:305:3: note: expanded from macro 'DEFINE_SCALAR_TEST'
DEFINE_TEST(name ## _ ## init, name, SCALAR, \
^
lib/stackinit_kunit.c:223:2: note: expanded from macro 'DEFINE_TEST'
if (fill) { \
^
lib/stackinit_kunit.c:333:1: note: Address of stack memory associated with local variable 'var' is still referred to by the global variable 'fill_start' upon returning to the caller. This will be a dangling reference
DEFINE_SCALAR_TESTS(zero, ALWAYS_PASS);
^
lib/stackinit_kunit.c:309:3: note: expanded from macro 'DEFINE_SCALAR_TESTS'
DEFINE_SCALAR_TEST(u8, init, xfail); \
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
lib/stackinit_kunit.c:305:3: note: expanded from macro 'DEFINE_SCALAR_TEST'
DEFINE_TEST(name ## _ ## init, name, SCALAR, \
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
lib/stackinit_kunit.c:237:2: note: expanded from macro 'DEFINE_TEST'
return (int)buf[0] | (int)buf[sizeof(buf) - 1]; \
^
>> lib/stackinit_kunit.c:333:1: warning: Address of stack memory associated with local variable 'var' is still referred to by the global variable 'target_start' upon returning to the caller. This will be a dangling reference [clang-analyzer-core.StackAddressEscape]
DEFINE_SCALAR_TESTS(zero, ALWAYS_PASS);
^
lib/stackinit_kunit.c:309:3: note: expanded from macro 'DEFINE_SCALAR_TESTS'
DEFINE_SCALAR_TEST(u8, init, xfail); \
^
lib/stackinit_kunit.c:305:3: note: expanded from macro 'DEFINE_SCALAR_TEST'
DEFINE_TEST(name ## _ ## init, name, SCALAR, \
^
lib/stackinit_kunit.c:237:2: note: expanded from macro 'DEFINE_TEST'
return (int)buf[0] | (int)buf[sizeof(buf) - 1]; \
^
lib/stackinit_kunit.c:333:1: note: Taking false branch
DEFINE_SCALAR_TESTS(zero, ALWAYS_PASS);
^
lib/stackinit_kunit.c:309:3: note: expanded from macro 'DEFINE_SCALAR_TESTS'
DEFINE_SCALAR_TEST(u8, init, xfail); \
^
lib/stackinit_kunit.c:305:3: note: expanded from macro 'DEFINE_SCALAR_TEST'
DEFINE_TEST(name ## _ ## init, name, SCALAR, \
^
lib/stackinit_kunit.c:238:10: note: expanded from macro 'DEFINE_TEST'
} \
^
note: (skipping 3 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all)
include/linux/compiler_types.h:346:2: note: expanded from macro 'compiletime_assert'
_compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
^
include/linux/compiler_types.h:334:2: note: expanded from macro '_compiletime_assert'
__compiletime_assert(condition, msg, prefix, suffix)
^
include/linux/compiler_types.h:326:3: note: expanded from macro '__compiletime_assert'
if (!(condition)) \
^
lib/stackinit_kunit.c:333:1: note: Loop condition is false. Exiting loop
DEFINE_SCALAR_TESTS(zero, ALWAYS_PASS);
^
lib/stackinit_kunit.c:309:3: note: expanded from macro 'DEFINE_SCALAR_TESTS'
DEFINE_SCALAR_TEST(u8, init, xfail); \
^
lib/stackinit_kunit.c:305:3: note: expanded from macro 'DEFINE_SCALAR_TEST'
DEFINE_TEST(name ## _ ## init, name, SCALAR, \
^
lib/stackinit_kunit.c:238:10: note: expanded from macro 'DEFINE_TEST'
} \
^
note: (skipping 3 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all)
include/linux/compiler_types.h:346:2: note: expanded from macro 'compiletime_assert'
_compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
^
include/linux/compiler_types.h:334:2: note: expanded from macro '_compiletime_assert'
__compiletime_assert(condition, msg, prefix, suffix)
^
include/linux/compiler_types.h:318:2: note: expanded from macro '__compiletime_assert'
do { \
^
lib/stackinit_kunit.c:333:1: note: Calling 'leaf_u8_zero'
DEFINE_SCALAR_TESTS(zero, ALWAYS_PASS);
^
lib/stackinit_kunit.c:309:3: note: expanded from macro 'DEFINE_SCALAR_TESTS'
DEFINE_SCALAR_TEST(u8, init, xfail); \
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
lib/stackinit_kunit.c:305:3: note: expanded from macro 'DEFINE_SCALAR_TEST'
DEFINE_TEST(name ## _ ## init, name, SCALAR, \
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
lib/stackinit_kunit.c:238:10: note: expanded from macro 'DEFINE_TEST'
} \
^
lib/stackinit_kunit.c:163:12: note: expanded from macro '\DEFINE_TEST_DRIVER'
ignored = leaf_ ##name((unsigned long)&ignored, 1, \
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
note: expanded from here
lib/stackinit_kunit.c:333:1: note: 'fill' is true
DEFINE_SCALAR_TESTS(zero, ALWAYS_PASS);
^
lib/stackinit_kunit.c:309:3: note: expanded from macro 'DEFINE_SCALAR_TESTS'
DEFINE_SCALAR_TEST(u8, init, xfail); \
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
lib/stackinit_kunit.c:305:3: note: expanded from macro 'DEFINE_SCALAR_TEST'
DEFINE_TEST(name ## _ ## init, name, SCALAR, \
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
lib/stackinit_kunit.c:223:6: note: expanded from macro 'DEFINE_TEST'
if (fill) { \
^~~~
lib/stackinit_kunit.c:333:1: note: Taking true branch
DEFINE_SCALAR_TESTS(zero, ALWAYS_PASS);
^
lib/stackinit_kunit.c:309:3: note: expanded from macro 'DEFINE_SCALAR_TESTS'
DEFINE_SCALAR_TEST(u8, init, xfail); \
^
lib/stackinit_kunit.c:305:3: note: expanded from macro 'DEFINE_SCALAR_TEST'
DEFINE_TEST(name ## _ ## init, name, SCALAR, \
^
lib/stackinit_kunit.c:223:2: note: expanded from macro 'DEFINE_TEST'
if (fill) { \
^
lib/stackinit_kunit.c:333:1: note: Address of stack memory associated with local variable 'var' is still referred to by the global variable 'target_start' upon returning to the caller. This will be a dangling reference
DEFINE_SCALAR_TESTS(zero, ALWAYS_PASS);
^
lib/stackinit_kunit.c:309:3: note: expanded from macro 'DEFINE_SCALAR_TESTS'
DEFINE_SCALAR_TEST(u8, init, xfail); \
--
^
lib/stackinit_kunit.c:237:2: note: expanded from macro 'DEFINE_TEST'
return (int)buf[0] | (int)buf[sizeof(buf) - 1]; \
^
lib/stackinit_kunit.c:343:1: note: Taking false branch
DEFINE_SCALAR_TESTS(none, STRONG_PASS);
^
lib/stackinit_kunit.c:309:3: note: expanded from macro 'DEFINE_SCALAR_TESTS'
DEFINE_SCALAR_TEST(u8, init, xfail); \
^
lib/stackinit_kunit.c:305:3: note: expanded from macro 'DEFINE_SCALAR_TEST'
DEFINE_TEST(name ## _ ## init, name, SCALAR, \
^
lib/stackinit_kunit.c:238:10: note: expanded from macro 'DEFINE_TEST'
} \
^
note: (skipping 3 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all)
include/linux/compiler_types.h:346:2: note: expanded from macro 'compiletime_assert'
_compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
^
include/linux/compiler_types.h:334:2: note: expanded from macro '_compiletime_assert'
__compiletime_assert(condition, msg, prefix, suffix)
^
include/linux/compiler_types.h:326:3: note: expanded from macro '__compiletime_assert'
if (!(condition)) \
^
lib/stackinit_kunit.c:343:1: note: Loop condition is false. Exiting loop
DEFINE_SCALAR_TESTS(none, STRONG_PASS);
^
lib/stackinit_kunit.c:309:3: note: expanded from macro 'DEFINE_SCALAR_TESTS'
DEFINE_SCALAR_TEST(u8, init, xfail); \
^
lib/stackinit_kunit.c:305:3: note: expanded from macro 'DEFINE_SCALAR_TEST'
DEFINE_TEST(name ## _ ## init, name, SCALAR, \
^
lib/stackinit_kunit.c:238:10: note: expanded from macro 'DEFINE_TEST'
} \
^
note: (skipping 3 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all)
include/linux/compiler_types.h:346:2: note: expanded from macro 'compiletime_assert'
_compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
^
include/linux/compiler_types.h:334:2: note: expanded from macro '_compiletime_assert'
__compiletime_assert(condition, msg, prefix, suffix)
^
include/linux/compiler_types.h:318:2: note: expanded from macro '__compiletime_assert'
do { \
^
lib/stackinit_kunit.c:343:1: note: Calling 'leaf_u8_none'
DEFINE_SCALAR_TESTS(none, STRONG_PASS);
^
lib/stackinit_kunit.c:309:3: note: expanded from macro 'DEFINE_SCALAR_TESTS'
DEFINE_SCALAR_TEST(u8, init, xfail); \
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
lib/stackinit_kunit.c:305:3: note: expanded from macro 'DEFINE_SCALAR_TEST'
DEFINE_TEST(name ## _ ## init, name, SCALAR, \
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
lib/stackinit_kunit.c:238:10: note: expanded from macro 'DEFINE_TEST'
} \
^
lib/stackinit_kunit.c:163:12: note: expanded from macro '\DEFINE_TEST_DRIVER'
ignored = leaf_ ##name((unsigned long)&ignored, 1, \
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
note: expanded from here
lib/stackinit_kunit.c:343:1: note: 'fill' is true
DEFINE_SCALAR_TESTS(none, STRONG_PASS);
^
lib/stackinit_kunit.c:309:3: note: expanded from macro 'DEFINE_SCALAR_TESTS'
DEFINE_SCALAR_TEST(u8, init, xfail); \
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
lib/stackinit_kunit.c:305:3: note: expanded from macro 'DEFINE_SCALAR_TEST'
DEFINE_TEST(name ## _ ## init, name, SCALAR, \
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
lib/stackinit_kunit.c:223:6: note: expanded from macro 'DEFINE_TEST'
if (fill) { \
^~~~
lib/stackinit_kunit.c:343:1: note: Taking true branch
DEFINE_SCALAR_TESTS(none, STRONG_PASS);
^
lib/stackinit_kunit.c:309:3: note: expanded from macro 'DEFINE_SCALAR_TESTS'
DEFINE_SCALAR_TEST(u8, init, xfail); \
^
lib/stackinit_kunit.c:305:3: note: expanded from macro 'DEFINE_SCALAR_TEST'
DEFINE_TEST(name ## _ ## init, name, SCALAR, \
^
lib/stackinit_kunit.c:223:2: note: expanded from macro 'DEFINE_TEST'
if (fill) { \
^
lib/stackinit_kunit.c:343:1: note: Address of stack memory associated with local variable 'var' is still referred to by the global variable 'target_start' upon returning to the caller. This will be a dangling reference
DEFINE_SCALAR_TESTS(none, STRONG_PASS);
^
lib/stackinit_kunit.c:309:3: note: expanded from macro 'DEFINE_SCALAR_TESTS'
DEFINE_SCALAR_TEST(u8, init, xfail); \
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
lib/stackinit_kunit.c:305:3: note: expanded from macro 'DEFINE_SCALAR_TEST'
DEFINE_TEST(name ## _ ## init, name, SCALAR, \
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
lib/stackinit_kunit.c:237:2: note: expanded from macro 'DEFINE_TEST'
return (int)buf[0] | (int)buf[sizeof(buf) - 1]; \
^
>> lib/stackinit_kunit.c:343:1: warning: Undefined or garbage value returned to caller [clang-analyzer-core.uninitialized.UndefReturn]
DEFINE_SCALAR_TESTS(none, STRONG_PASS);
^
lib/stackinit_kunit.c:309:3: note: expanded from macro 'DEFINE_SCALAR_TESTS'
DEFINE_SCALAR_TEST(u8, init, xfail); \
^
lib/stackinit_kunit.c:305:3: note: expanded from macro 'DEFINE_SCALAR_TEST'
DEFINE_TEST(name ## _ ## init, name, SCALAR, \
^
lib/stackinit_kunit.c:204:3: note: expanded from macro 'DEFINE_TEST'
return DO_NOTHING_RETURN_ ## which(ptr); \
^
lib/stackinit_kunit.c:343:1: note: Taking false branch
DEFINE_SCALAR_TESTS(none, STRONG_PASS);
^
lib/stackinit_kunit.c:309:3: note: expanded from macro 'DEFINE_SCALAR_TESTS'
DEFINE_SCALAR_TEST(u8, init, xfail); \
^
lib/stackinit_kunit.c:305:3: note: expanded from macro 'DEFINE_SCALAR_TEST'
DEFINE_TEST(name ## _ ## init, name, SCALAR, \
^
lib/stackinit_kunit.c:238:10: note: expanded from macro 'DEFINE_TEST'
} \
^
note: (skipping 3 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all)
include/linux/compiler_types.h:346:2: note: expanded from macro 'compiletime_assert'
_compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
^
include/linux/compiler_types.h:334:2: note: expanded from macro '_compiletime_assert'
__compiletime_assert(condition, msg, prefix, suffix)
^
include/linux/compiler_types.h:326:3: note: expanded from macro '__compiletime_assert'
if (!(condition)) \
^
lib/stackinit_kunit.c:343:1: note: Loop condition is false. Exiting loop
DEFINE_SCALAR_TESTS(none, STRONG_PASS);
^
lib/stackinit_kunit.c:309:3: note: expanded from macro 'DEFINE_SCALAR_TESTS'
DEFINE_SCALAR_TEST(u8, init, xfail); \
^
lib/stackinit_kunit.c:305:3: note: expanded from macro 'DEFINE_SCALAR_TEST'
DEFINE_TEST(name ## _ ## init, name, SCALAR, \
^
lib/stackinit_kunit.c:238:10: note: expanded from macro 'DEFINE_TEST'
} \
^
note: (skipping 3 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all)
include/linux/compiler_types.h:346:2: note: expanded from macro 'compiletime_assert'
_compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
^
include/linux/compiler_types.h:334:2: note: expanded from macro '_compiletime_assert'
__compiletime_assert(condition, msg, prefix, suffix)
^
include/linux/compiler_types.h:318:2: note: expanded from macro '__compiletime_assert'
do { \
^
lib/stackinit_kunit.c:343:1: note: Loop condition is true. Entering loop body
DEFINE_SCALAR_TESTS(none, STRONG_PASS);
^
lib/stackinit_kunit.c:309:3: note: expanded from macro 'DEFINE_SCALAR_TESTS'
DEFINE_SCALAR_TEST(u8, init, xfail); \
^
lib/stackinit_kunit.c:305:3: note: expanded from macro 'DEFINE_SCALAR_TEST'
DEFINE_TEST(name ## _ ## init, name, SCALAR, \
^
lib/stackinit_kunit.c:238:10: note: expanded from macro 'DEFINE_TEST'
} \
^
lib/stackinit_kunit.c:166:2: note: expanded from macro '\DEFINE_TEST_DRIVER'
for (sum = 0, i = 0; i < target_size; i++) \
^
lib/stackinit_kunit.c:343:1: note: Assuming the condition is false
DEFINE_SCALAR_TESTS(none, STRONG_PASS);
^
lib/stackinit_kunit.c:309:3: note: expanded from macro 'DEFINE_SCALAR_TESTS'
DEFINE_SCALAR_TEST(u8, init, xfail); \
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
lib/stackinit_kunit.c:305:3: note: expanded from macro 'DEFINE_SCALAR_TEST'
DEFINE_TEST(name ## _ ## init, name, SCALAR, \
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
lib/stackinit_kunit.c:238:10: note: expanded from macro 'DEFINE_TEST'
} \
^
lib/stackinit_kunit.c:167:11: note: expanded from macro '\DEFINE_TEST_DRIVER'
sum += (check_buf[i] != 0xFF); \
^~~~~~~~~~~~~~~~~~~~
lib/stackinit_kunit.c:343:1: note: Loop condition is false. Execution continues on line 343
DEFINE_SCALAR_TESTS(none, STRONG_PASS);
^
lib/stackinit_kunit.c:309:3: note: expanded from macro 'DEFINE_SCALAR_TESTS'
DEFINE_SCALAR_TEST(u8, init, xfail); \
^
lib/stackinit_kunit.c:305:3: note: expanded from macro 'DEFINE_SCALAR_TEST'
DEFINE_TEST(name ## _ ## init, name, SCALAR, \
^
lib/stackinit_kunit.c:238:10: note: expanded from macro 'DEFINE_TEST'
} \
^
lib/stackinit_kunit.c:166:2: note: expanded from macro '\DEFINE_TEST_DRIVER'
for (sum = 0, i = 0; i < target_size; i++) \
^
vim +259 lib/stackinit_kunit.c
50ceaa95ea09703 lib/test_stackinit.c Kees Cook 2019-01-23 257
f9398f15605a501 lib/test_stackinit.c Kees Cook 2021-07-23 258 /* Trigger unhandled padding in a structure. */
50ceaa95ea09703 lib/test_stackinit.c Kees Cook 2019-01-23 @259 struct test_big_hole {
50ceaa95ea09703 lib/test_stackinit.c Kees Cook 2019-01-23 260 u8 one;
50ceaa95ea09703 lib/test_stackinit.c Kees Cook 2019-01-23 261 u8 two;
50ceaa95ea09703 lib/test_stackinit.c Kees Cook 2019-01-23 262 u8 three;
50ceaa95ea09703 lib/test_stackinit.c Kees Cook 2019-01-23 263 /* 61 byte padding hole here. */
f9398f15605a501 lib/test_stackinit.c Kees Cook 2021-07-23 264 u8 four __aligned(64);
50ceaa95ea09703 lib/test_stackinit.c Kees Cook 2019-01-23 265 } __aligned(64);
50ceaa95ea09703 lib/test_stackinit.c Kees Cook 2019-01-23 266
50ceaa95ea09703 lib/test_stackinit.c Kees Cook 2019-01-23 267 struct test_trailing_hole {
50ceaa95ea09703 lib/test_stackinit.c Kees Cook 2019-01-23 268 char *one;
50ceaa95ea09703 lib/test_stackinit.c Kees Cook 2019-01-23 269 char *two;
50ceaa95ea09703 lib/test_stackinit.c Kees Cook 2019-01-23 270 char *three;
50ceaa95ea09703 lib/test_stackinit.c Kees Cook 2019-01-23 271 char four;
50ceaa95ea09703 lib/test_stackinit.c Kees Cook 2019-01-23 272 /* "sizeof(unsigned long) - 1" byte padding hole here. */
50ceaa95ea09703 lib/test_stackinit.c Kees Cook 2019-01-23 273 };
50ceaa95ea09703 lib/test_stackinit.c Kees Cook 2019-01-23 274
50ceaa95ea09703 lib/test_stackinit.c Kees Cook 2019-01-23 275 /* Test if STRUCTLEAK is clearing structs with __user fields. */
50ceaa95ea09703 lib/test_stackinit.c Kees Cook 2019-01-23 276 struct test_user {
50ceaa95ea09703 lib/test_stackinit.c Kees Cook 2019-01-23 277 u8 one;
50ceaa95ea09703 lib/test_stackinit.c Kees Cook 2019-01-23 278 unsigned long two;
50ceaa95ea09703 lib/test_stackinit.c Kees Cook 2019-01-23 279 char __user *three;
50ceaa95ea09703 lib/test_stackinit.c Kees Cook 2019-01-23 280 unsigned long four;
50ceaa95ea09703 lib/test_stackinit.c Kees Cook 2019-01-23 281 };
50ceaa95ea09703 lib/test_stackinit.c Kees Cook 2019-01-23 282
8d60400704e503d lib/stackinit_kunit.c Kees Cook 2022-02-16 283 #define ALWAYS_PASS WANT_SUCCESS
8d60400704e503d lib/stackinit_kunit.c Kees Cook 2022-02-16 284 #define ALWAYS_FAIL XFAIL
8d60400704e503d lib/stackinit_kunit.c Kees Cook 2022-02-16 285
8d60400704e503d lib/stackinit_kunit.c Kees Cook 2022-02-16 286 #ifdef CONFIG_INIT_STACK_NONE
8d60400704e503d lib/stackinit_kunit.c Kees Cook 2022-02-16 287 # define USER_PASS XFAIL
8d60400704e503d lib/stackinit_kunit.c Kees Cook 2022-02-16 288 # define BYREF_PASS XFAIL
8d60400704e503d lib/stackinit_kunit.c Kees Cook 2022-02-16 289 # define STRONG_PASS XFAIL
8d60400704e503d lib/stackinit_kunit.c Kees Cook 2022-02-16 290 #elif defined(CONFIG_GCC_PLUGIN_STRUCTLEAK_USER)
8d60400704e503d lib/stackinit_kunit.c Kees Cook 2022-02-16 291 # define USER_PASS WANT_SUCCESS
8d60400704e503d lib/stackinit_kunit.c Kees Cook 2022-02-16 292 # define BYREF_PASS XFAIL
8d60400704e503d lib/stackinit_kunit.c Kees Cook 2022-02-16 293 # define STRONG_PASS XFAIL
8d60400704e503d lib/stackinit_kunit.c Kees Cook 2022-02-16 294 #elif defined(CONFIG_GCC_PLUGIN_STRUCTLEAK_BYREF)
8d60400704e503d lib/stackinit_kunit.c Kees Cook 2022-02-16 295 # define USER_PASS WANT_SUCCESS
8d60400704e503d lib/stackinit_kunit.c Kees Cook 2022-02-16 296 # define BYREF_PASS WANT_SUCCESS
8d60400704e503d lib/stackinit_kunit.c Kees Cook 2022-02-16 297 # define STRONG_PASS XFAIL
8d60400704e503d lib/stackinit_kunit.c Kees Cook 2022-02-16 298 #else
8d60400704e503d lib/stackinit_kunit.c Kees Cook 2022-02-16 299 # define USER_PASS WANT_SUCCESS
8d60400704e503d lib/stackinit_kunit.c Kees Cook 2022-02-16 300 # define BYREF_PASS WANT_SUCCESS
8d60400704e503d lib/stackinit_kunit.c Kees Cook 2022-02-16 301 # define STRONG_PASS WANT_SUCCESS
8d60400704e503d lib/stackinit_kunit.c Kees Cook 2022-02-16 302 #endif
8d60400704e503d lib/stackinit_kunit.c Kees Cook 2022-02-16 303
a8fc576d4af2f23 lib/test_stackinit.c Kees Cook 2021-07-23 304 #define DEFINE_SCALAR_TEST(name, init, xfail) \
a8fc576d4af2f23 lib/test_stackinit.c Kees Cook 2021-07-23 305 DEFINE_TEST(name ## _ ## init, name, SCALAR, \
a8fc576d4af2f23 lib/test_stackinit.c Kees Cook 2021-07-23 306 init, xfail)
50ceaa95ea09703 lib/test_stackinit.c Kees Cook 2019-01-23 307
a8fc576d4af2f23 lib/test_stackinit.c Kees Cook 2021-07-23 308 #define DEFINE_SCALAR_TESTS(init, xfail) \
a8fc576d4af2f23 lib/test_stackinit.c Kees Cook 2021-07-23 309 DEFINE_SCALAR_TEST(u8, init, xfail); \
a8fc576d4af2f23 lib/test_stackinit.c Kees Cook 2021-07-23 310 DEFINE_SCALAR_TEST(u16, init, xfail); \
a8fc576d4af2f23 lib/test_stackinit.c Kees Cook 2021-07-23 311 DEFINE_SCALAR_TEST(u32, init, xfail); \
a8fc576d4af2f23 lib/test_stackinit.c Kees Cook 2021-07-23 312 DEFINE_SCALAR_TEST(u64, init, xfail); \
a8fc576d4af2f23 lib/test_stackinit.c Kees Cook 2021-07-23 313 DEFINE_TEST(char_array_ ## init, unsigned char, \
a8fc576d4af2f23 lib/test_stackinit.c Kees Cook 2021-07-23 314 STRING, init, xfail)
50ceaa95ea09703 lib/test_stackinit.c Kees Cook 2019-01-23 315
a8fc576d4af2f23 lib/test_stackinit.c Kees Cook 2021-07-23 316 #define DEFINE_STRUCT_TEST(name, init, xfail) \
50ceaa95ea09703 lib/test_stackinit.c Kees Cook 2019-01-23 317 DEFINE_TEST(name ## _ ## init, \
a8fc576d4af2f23 lib/test_stackinit.c Kees Cook 2021-07-23 318 struct test_ ## name, STRUCT, init, \
a8fc576d4af2f23 lib/test_stackinit.c Kees Cook 2021-07-23 319 xfail)
a8fc576d4af2f23 lib/test_stackinit.c Kees Cook 2021-07-23 320
a8fc576d4af2f23 lib/test_stackinit.c Kees Cook 2021-07-23 321 #define DEFINE_STRUCT_TESTS(init, xfail) \
a8fc576d4af2f23 lib/test_stackinit.c Kees Cook 2021-07-23 322 DEFINE_STRUCT_TEST(small_hole, init, xfail); \
a8fc576d4af2f23 lib/test_stackinit.c Kees Cook 2021-07-23 323 DEFINE_STRUCT_TEST(big_hole, init, xfail); \
a8fc576d4af2f23 lib/test_stackinit.c Kees Cook 2021-07-23 324 DEFINE_STRUCT_TEST(trailing_hole, init, xfail); \
a8fc576d4af2f23 lib/test_stackinit.c Kees Cook 2021-07-23 325 DEFINE_STRUCT_TEST(packed, init, xfail)
50ceaa95ea09703 lib/test_stackinit.c Kees Cook 2019-01-23 326
8d60400704e503d lib/stackinit_kunit.c Kees Cook 2022-02-16 327 #define DEFINE_STRUCT_INITIALIZER_TESTS(base, xfail) \
a8fc576d4af2f23 lib/test_stackinit.c Kees Cook 2021-07-23 328 DEFINE_STRUCT_TESTS(base ## _ ## partial, \
8d60400704e503d lib/stackinit_kunit.c Kees Cook 2022-02-16 329 xfail); \
8d60400704e503d lib/stackinit_kunit.c Kees Cook 2022-02-16 330 DEFINE_STRUCT_TESTS(base ## _ ## all, xfail)
50ceaa95ea09703 lib/test_stackinit.c Kees Cook 2019-01-23 331
50ceaa95ea09703 lib/test_stackinit.c Kees Cook 2019-01-23 332 /* These should be fully initialized all the time! */
8d60400704e503d lib/stackinit_kunit.c Kees Cook 2022-02-16 @333 DEFINE_SCALAR_TESTS(zero, ALWAYS_PASS);
8d60400704e503d lib/stackinit_kunit.c Kees Cook 2022-02-16 334 DEFINE_STRUCT_TESTS(zero, ALWAYS_PASS);
a8fc576d4af2f23 lib/test_stackinit.c Kees Cook 2021-07-23 335 /* Struct initializers: padding may be left uninitialized. */
8d60400704e503d lib/stackinit_kunit.c Kees Cook 2022-02-16 336 DEFINE_STRUCT_INITIALIZER_TESTS(static, STRONG_PASS);
8d60400704e503d lib/stackinit_kunit.c Kees Cook 2022-02-16 337 DEFINE_STRUCT_INITIALIZER_TESTS(dynamic, STRONG_PASS);
8d60400704e503d lib/stackinit_kunit.c Kees Cook 2022-02-16 338 DEFINE_STRUCT_INITIALIZER_TESTS(runtime, STRONG_PASS);
8d60400704e503d lib/stackinit_kunit.c Kees Cook 2022-02-16 339 DEFINE_STRUCT_INITIALIZER_TESTS(assigned_static, STRONG_PASS);
8d60400704e503d lib/stackinit_kunit.c Kees Cook 2022-02-16 340 DEFINE_STRUCT_INITIALIZER_TESTS(assigned_dynamic, STRONG_PASS);
8d60400704e503d lib/stackinit_kunit.c Kees Cook 2022-02-16 341 DEFINE_STRUCT_TESTS(assigned_copy, ALWAYS_FAIL);
50ceaa95ea09703 lib/test_stackinit.c Kees Cook 2019-01-23 342 /* No initialization without compiler instrumentation. */
8d60400704e503d lib/stackinit_kunit.c Kees Cook 2022-02-16 @343 DEFINE_SCALAR_TESTS(none, STRONG_PASS);
8d60400704e503d lib/stackinit_kunit.c Kees Cook 2022-02-16 344 DEFINE_STRUCT_TESTS(none, BYREF_PASS);
a8fc576d4af2f23 lib/test_stackinit.c Kees Cook 2021-07-23 345 /* Initialization of members with __user attribute. */
8d60400704e503d lib/stackinit_kunit.c Kees Cook 2022-02-16 346 DEFINE_TEST(user, struct test_user, STRUCT, none, USER_PASS);
50ceaa95ea09703 lib/test_stackinit.c Kees Cook 2019-01-23 347
:::::: The code@line 259 was first introduced by commit
:::::: 50ceaa95ea09703722b30b4afa617c972071cd7f lib: Introduce test_stackinit module
:::::: TO: Kees Cook <keescook@chromium.org>
:::::: CC: Kees Cook <keescook@chromium.org>
---
0-DAY CI Kernel Test Service
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2022-03-15 7:46 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-03-15 7:46 [linux-next:master 8478/11953] lib/stackinit_kunit.c:259:8: warning: Excessive padding in 'struct test_big_hole' (124 padding bytes, where 60 is optimal) kernel test robot
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.