Re: [PATCH v3 1/3] stacktrace: move arch_within_stack_frames from thread_info.h

From: kbuild test robot
Date: Mon Apr 09 2018 - 17:04:55 EST


Hi Sahara,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on linus/master]
[also build test ERROR on v4.16 next-20180409]
[cannot apply to tip/x86/core]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]

url: https://github.com/0day-ci/linux/commits/kpark3469-gmail-com/usercopy-reimplement-arch_within_stack_frames/20180409-221953
config: x86_64-randconfig-s0-04100256 (attached as .config)
compiler: gcc-6 (Debian 6.4.0-9) 6.4.0 20171026
reproduce:
# save the attached .config to linux build tree
make ARCH=x86_64

All errors (new ones prefixed by >>):

drivers/gpu//drm/drm_mm.c: In function 'save_stack':
drivers/gpu//drm/drm_mm.c:109:9: error: variable 'trace' has initializer but incomplete type
struct stack_trace trace = {
^~~~~~~~~~~
>> drivers/gpu//drm/drm_mm.c:110:3: error: unknown field 'entries' specified in initializer
.entries = entries,
^
drivers/gpu//drm/drm_mm.c:110:14: warning: excess elements in struct initializer
.entries = entries,
^~~~~~~
drivers/gpu//drm/drm_mm.c:110:14: note: (near initialization for 'trace')
>> drivers/gpu//drm/drm_mm.c:111:3: error: unknown field 'max_entries' specified in initializer
.max_entries = STACKDEPTH,
^
drivers/gpu//drm/drm_mm.c:103:20: warning: excess elements in struct initializer
#define STACKDEPTH 32
^
drivers/gpu//drm/drm_mm.c:111:18: note: in expansion of macro 'STACKDEPTH'
.max_entries = STACKDEPTH,
^~~~~~~~~~
drivers/gpu//drm/drm_mm.c:103:20: note: (near initialization for 'trace')
#define STACKDEPTH 32
^
drivers/gpu//drm/drm_mm.c:111:18: note: in expansion of macro 'STACKDEPTH'
.max_entries = STACKDEPTH,
^~~~~~~~~~
>> drivers/gpu//drm/drm_mm.c:112:3: error: unknown field 'skip' specified in initializer
.skip = 1
^
drivers/gpu//drm/drm_mm.c:112:11: warning: excess elements in struct initializer
.skip = 1
^
drivers/gpu//drm/drm_mm.c:112:11: note: (near initialization for 'trace')
drivers/gpu//drm/drm_mm.c:109:21: error: storage size of 'trace' isn't known
struct stack_trace trace = {
^~~~~
>> drivers/gpu//drm/drm_mm.c:115:2: error: implicit declaration of function 'save_stack_trace' [-Werror=implicit-function-declaration]
save_stack_trace(&trace);
^~~~~~~~~~~~~~~~
drivers/gpu//drm/drm_mm.c:109:21: warning: unused variable 'trace' [-Wunused-variable]
struct stack_trace trace = {
^~~~~
drivers/gpu//drm/drm_mm.c: In function 'show_leaks':
drivers/gpu//drm/drm_mm.c:135:10: error: variable 'trace' has initializer but incomplete type
struct stack_trace trace = {
^~~~~~~~~~~
drivers/gpu//drm/drm_mm.c:136:4: error: unknown field 'entries' specified in initializer
.entries = entries,
^
drivers/gpu//drm/drm_mm.c:136:15: warning: excess elements in struct initializer
.entries = entries,
^~~~~~~
drivers/gpu//drm/drm_mm.c:136:15: note: (near initialization for 'trace')
drivers/gpu//drm/drm_mm.c:137:4: error: unknown field 'max_entries' specified in initializer
.max_entries = STACKDEPTH
^
drivers/gpu//drm/drm_mm.c:103:20: warning: excess elements in struct initializer
#define STACKDEPTH 32
^
drivers/gpu//drm/drm_mm.c:137:19: note: in expansion of macro 'STACKDEPTH'
.max_entries = STACKDEPTH
^~~~~~~~~~
drivers/gpu//drm/drm_mm.c:103:20: note: (near initialization for 'trace')
#define STACKDEPTH 32
^
drivers/gpu//drm/drm_mm.c:137:19: note: in expansion of macro 'STACKDEPTH'
.max_entries = STACKDEPTH
^~~~~~~~~~
drivers/gpu//drm/drm_mm.c:135:22: error: storage size of 'trace' isn't known
struct stack_trace trace = {
^~~~~
drivers/gpu//drm/drm_mm.c:147:3: error: implicit declaration of function 'snprint_stack_trace' [-Werror=implicit-function-declaration]
snprint_stack_trace(buf, BUFSZ, &trace, 0);
^~~~~~~~~~~~~~~~~~~
drivers/gpu//drm/drm_mm.c:135:22: warning: unused variable 'trace' [-Wunused-variable]
struct stack_trace trace = {
^~~~~
cc1: some warnings being treated as errors

vim +/max_entries +111 drivers/gpu//drm/drm_mm.c

5705670d Chris Wilson 2016-10-31 105
5705670d Chris Wilson 2016-10-31 106 static noinline void save_stack(struct drm_mm_node *node)
5705670d Chris Wilson 2016-10-31 107 {
5705670d Chris Wilson 2016-10-31 108 unsigned long entries[STACKDEPTH];
5705670d Chris Wilson 2016-10-31 @109 struct stack_trace trace = {
5705670d Chris Wilson 2016-10-31 @110 .entries = entries,
5705670d Chris Wilson 2016-10-31 @111 .max_entries = STACKDEPTH,
5705670d Chris Wilson 2016-10-31 @112 .skip = 1
5705670d Chris Wilson 2016-10-31 113 };
5705670d Chris Wilson 2016-10-31 114
5705670d Chris Wilson 2016-10-31 @115 save_stack_trace(&trace);
5705670d Chris Wilson 2016-10-31 116 if (trace.nr_entries != 0 &&
5705670d Chris Wilson 2016-10-31 117 trace.entries[trace.nr_entries-1] == ULONG_MAX)
5705670d Chris Wilson 2016-10-31 118 trace.nr_entries--;
5705670d Chris Wilson 2016-10-31 119
5705670d Chris Wilson 2016-10-31 120 /* May be called under spinlock, so avoid sleeping */
5705670d Chris Wilson 2016-10-31 121 node->stack = depot_save_stack(&trace, GFP_NOWAIT);
5705670d Chris Wilson 2016-10-31 122 }
5705670d Chris Wilson 2016-10-31 123

:::::: The code at line 111 was first introduced by commit
:::::: 5705670d0463423337c82d00877989e7df8b169d drm: Track drm_mm allocators and show leaks on shutdown

:::::: TO: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx>
:::::: CC: Daniel Vetter <daniel.vetter@xxxxxxxx>

---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation

Attachment: .config.gz
Description: application/gzip