lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <202409150605.HgUmU8ea-lkp@intel.com>
Date: Sun, 15 Sep 2024 06:26:57 +0800
From: kernel test robot <lkp@...el.com>
To: Donglin Peng <dolinux.peng@...il.com>, rostedt@...dmis.org,
	mhiramat@...nel.org
Cc: llvm@...ts.linux.dev, oe-kbuild-all@...ts.linux.dev,
	mark.rutland@....com, mathieu.desnoyers@...icios.com,
	linux-trace-kernel@...r.kernel.org, linux-kernel@...r.kernel.org,
	Donglin Peng <dolinux.peng@...il.com>
Subject: Re: [PATCH v1] function_graph: Support recording and printing the
 function return address

Hi Donglin,

kernel test robot noticed the following build errors:

[auto build test ERROR on shuah-kselftest/next]
[also build test ERROR on shuah-kselftest/fixes linus/master v6.11-rc7]
[cannot apply to next-20240913]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/Donglin-Peng/function_graph-Support-recording-and-printing-the-function-return-address/20240913-204403
base:   https://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux-kselftest.git next
patch link:    https://lore.kernel.org/r/20240913123456.600950-1-dolinux.peng%40gmail.com
patch subject: [PATCH v1] function_graph: Support recording and printing the function return address
config: x86_64-allyesconfig (https://download.01.org/0day-ci/archive/20240915/202409150605.HgUmU8ea-lkp@intel.com/config)
compiler: clang version 18.1.8 (https://github.com/llvm/llvm-project 3b5b5c1ec4a3095ab096dd780e84d7ab81f3d7ff)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240915/202409150605.HgUmU8ea-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@...el.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202409150605.HgUmU8ea-lkp@intel.com/

All errors (new ones prefixed by >>):

   In file included from kernel/trace/trace.c:8677:
>> kernel/trace/trace_selftest.c:910:18: error: incompatible function pointer types initializing 'trace_func_graph_ent_t' (aka 'int (*)(struct ftrace_graph_ent *, struct fgraph_ops *, struct fgraph_extras *)') with an expression of type 'int (struct ftrace_graph_ent *, struct fgraph_ops *)' [-Wincompatible-function-pointer-types]
     910 |                         .entryfunc              = store_entry,
         |                                                   ^~~~~~~~~~~
   kernel/trace/trace_selftest.c:918:18: error: incompatible function pointer types initializing 'trace_func_graph_ent_t' (aka 'int (*)(struct ftrace_graph_ent *, struct fgraph_ops *, struct fgraph_extras *)') with an expression of type 'int (struct ftrace_graph_ent *, struct fgraph_ops *)' [-Wincompatible-function-pointer-types]
     918 |                         .entryfunc              = store_entry,
         |                                                   ^~~~~~~~~~~
   kernel/trace/trace_selftest.c:926:18: error: incompatible function pointer types initializing 'trace_func_graph_ent_t' (aka 'int (*)(struct ftrace_graph_ent *, struct fgraph_ops *, struct fgraph_extras *)') with an expression of type 'int (struct ftrace_graph_ent *, struct fgraph_ops *)' [-Wincompatible-function-pointer-types]
     926 |                         .entryfunc              = store_entry,
         |                                                   ^~~~~~~~~~~
   kernel/trace/trace_selftest.c:934:18: error: incompatible function pointer types initializing 'trace_func_graph_ent_t' (aka 'int (*)(struct ftrace_graph_ent *, struct fgraph_ops *, struct fgraph_extras *)') with an expression of type 'int (struct ftrace_graph_ent *, struct fgraph_ops *)' [-Wincompatible-function-pointer-types]
     934 |                         .entryfunc              = store_entry,
         |                                                   ^~~~~~~~~~~
>> kernel/trace/trace_selftest.c:1029:38: error: too few arguments to function call, expected 3, have 2
    1029 |         return trace_graph_entry(trace, gops);
         |                ~~~~~~~~~~~~~~~~~            ^
   kernel/trace/trace.h:689:5: note: 'trace_graph_entry' declared here
     689 | int trace_graph_entry(struct ftrace_graph_ent *trace, struct fgraph_ops *gops,
         |     ^                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     690 |                       struct fgraph_extras *priv);
         |                       ~~~~~~~~~~~~~~~~~~~~~~~~~~
   In file included from kernel/trace/trace.c:8677:
   kernel/trace/trace_selftest.c:1033:16: error: incompatible function pointer types initializing 'trace_func_graph_ent_t' (aka 'int (*)(struct ftrace_graph_ent *, struct fgraph_ops *, struct fgraph_extras *)') with an expression of type 'int (*)(struct ftrace_graph_ent *, struct fgraph_ops *)' [-Wincompatible-function-pointer-types]
    1033 |         .entryfunc              = &trace_graph_entry_watchdog,
         |                                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~
   6 errors generated.


vim +910 kernel/trace/trace_selftest.c

dd120af2d5f8f3 Masami Hiramatsu (Google  2024-06-03   906) 
dd120af2d5f8f3 Masami Hiramatsu (Google  2024-06-03   907) static struct fgraph_fixture store_bytes[4] __initdata = {
dd120af2d5f8f3 Masami Hiramatsu (Google  2024-06-03   908) 	[0] = {
dd120af2d5f8f3 Masami Hiramatsu (Google  2024-06-03   909) 		.gops = {
dd120af2d5f8f3 Masami Hiramatsu (Google  2024-06-03  @910) 			.entryfunc		= store_entry,
dd120af2d5f8f3 Masami Hiramatsu (Google  2024-06-03   911) 			.retfunc		= store_return,
dd120af2d5f8f3 Masami Hiramatsu (Google  2024-06-03   912) 		},
dd120af2d5f8f3 Masami Hiramatsu (Google  2024-06-03   913) 		.store_size = 1,
dd120af2d5f8f3 Masami Hiramatsu (Google  2024-06-03   914) 		.store_type_name = "byte",
dd120af2d5f8f3 Masami Hiramatsu (Google  2024-06-03   915) 	},
dd120af2d5f8f3 Masami Hiramatsu (Google  2024-06-03   916) 	[1] = {
dd120af2d5f8f3 Masami Hiramatsu (Google  2024-06-03   917) 		.gops = {
dd120af2d5f8f3 Masami Hiramatsu (Google  2024-06-03   918) 			.entryfunc		= store_entry,
dd120af2d5f8f3 Masami Hiramatsu (Google  2024-06-03   919) 			.retfunc		= store_return,
dd120af2d5f8f3 Masami Hiramatsu (Google  2024-06-03   920) 		},
dd120af2d5f8f3 Masami Hiramatsu (Google  2024-06-03   921) 		.store_size = 2,
dd120af2d5f8f3 Masami Hiramatsu (Google  2024-06-03   922) 		.store_type_name = "short",
dd120af2d5f8f3 Masami Hiramatsu (Google  2024-06-03   923) 	},
dd120af2d5f8f3 Masami Hiramatsu (Google  2024-06-03   924) 	[2] = {
dd120af2d5f8f3 Masami Hiramatsu (Google  2024-06-03   925) 		.gops = {
dd120af2d5f8f3 Masami Hiramatsu (Google  2024-06-03   926) 			.entryfunc		= store_entry,
dd120af2d5f8f3 Masami Hiramatsu (Google  2024-06-03   927) 			.retfunc		= store_return,
dd120af2d5f8f3 Masami Hiramatsu (Google  2024-06-03   928) 		},
dd120af2d5f8f3 Masami Hiramatsu (Google  2024-06-03   929) 		.store_size = 4,
dd120af2d5f8f3 Masami Hiramatsu (Google  2024-06-03   930) 		.store_type_name = "word",
dd120af2d5f8f3 Masami Hiramatsu (Google  2024-06-03   931) 	},
dd120af2d5f8f3 Masami Hiramatsu (Google  2024-06-03   932) 	[3] = {
dd120af2d5f8f3 Masami Hiramatsu (Google  2024-06-03   933) 		.gops = {
dd120af2d5f8f3 Masami Hiramatsu (Google  2024-06-03   934) 			.entryfunc		= store_entry,
dd120af2d5f8f3 Masami Hiramatsu (Google  2024-06-03   935) 			.retfunc		= store_return,
dd120af2d5f8f3 Masami Hiramatsu (Google  2024-06-03   936) 		},
dd120af2d5f8f3 Masami Hiramatsu (Google  2024-06-03   937) 		.store_size = 8,
dd120af2d5f8f3 Masami Hiramatsu (Google  2024-06-03   938) 		.store_type_name = "long long",
dd120af2d5f8f3 Masami Hiramatsu (Google  2024-06-03   939) 	},
dd120af2d5f8f3 Masami Hiramatsu (Google  2024-06-03   940) };
dd120af2d5f8f3 Masami Hiramatsu (Google  2024-06-03   941) 
dd120af2d5f8f3 Masami Hiramatsu (Google  2024-06-03   942) static __init int test_graph_storage_multi(void)
dd120af2d5f8f3 Masami Hiramatsu (Google  2024-06-03   943) {
dd120af2d5f8f3 Masami Hiramatsu (Google  2024-06-03   944) 	struct fgraph_fixture *fixture;
dd120af2d5f8f3 Masami Hiramatsu (Google  2024-06-03   945) 	bool printed = false;
dd120af2d5f8f3 Masami Hiramatsu (Google  2024-06-03   946) 	int i, ret;
dd120af2d5f8f3 Masami Hiramatsu (Google  2024-06-03   947) 
dd120af2d5f8f3 Masami Hiramatsu (Google  2024-06-03   948) 	pr_cont("PASSED\n");
dd120af2d5f8f3 Masami Hiramatsu (Google  2024-06-03   949) 	pr_info("Testing multiple fgraph storage on a function: ");
dd120af2d5f8f3 Masami Hiramatsu (Google  2024-06-03   950) 
dd120af2d5f8f3 Masami Hiramatsu (Google  2024-06-03   951) 	for (i = 0; i < ARRAY_SIZE(store_bytes); i++) {
dd120af2d5f8f3 Masami Hiramatsu (Google  2024-06-03   952) 		fixture = &store_bytes[i];
dd120af2d5f8f3 Masami Hiramatsu (Google  2024-06-03   953) 		ret = init_fgraph_fixture(fixture);
dd120af2d5f8f3 Masami Hiramatsu (Google  2024-06-03   954) 		if (ret && ret != -ENODEV) {
dd120af2d5f8f3 Masami Hiramatsu (Google  2024-06-03   955) 			pr_cont("*Could not set filter* ");
dd120af2d5f8f3 Masami Hiramatsu (Google  2024-06-03   956) 			printed = true;
dd120af2d5f8f3 Masami Hiramatsu (Google  2024-06-03   957) 			goto out;
dd120af2d5f8f3 Masami Hiramatsu (Google  2024-06-03   958) 		}
dd120af2d5f8f3 Masami Hiramatsu (Google  2024-06-03   959) 
dd120af2d5f8f3 Masami Hiramatsu (Google  2024-06-03   960) 		ret = register_ftrace_graph(&fixture->gops);
dd120af2d5f8f3 Masami Hiramatsu (Google  2024-06-03   961) 		if (ret) {
dd120af2d5f8f3 Masami Hiramatsu (Google  2024-06-03   962) 			pr_warn("Failed to init store_bytes fgraph tracing\n");
dd120af2d5f8f3 Masami Hiramatsu (Google  2024-06-03   963) 			printed = true;
dd120af2d5f8f3 Masami Hiramatsu (Google  2024-06-03   964) 			goto out;
dd120af2d5f8f3 Masami Hiramatsu (Google  2024-06-03   965) 		}
dd120af2d5f8f3 Masami Hiramatsu (Google  2024-06-03   966) 	}
dd120af2d5f8f3 Masami Hiramatsu (Google  2024-06-03   967) 
dd120af2d5f8f3 Masami Hiramatsu (Google  2024-06-03   968) 	DYN_FTRACE_TEST_NAME();
dd120af2d5f8f3 Masami Hiramatsu (Google  2024-06-03   969) out:
dd120af2d5f8f3 Masami Hiramatsu (Google  2024-06-03   970) 	while (--i >= 0) {
dd120af2d5f8f3 Masami Hiramatsu (Google  2024-06-03   971) 		fixture = &store_bytes[i];
dd120af2d5f8f3 Masami Hiramatsu (Google  2024-06-03   972) 		unregister_ftrace_graph(&fixture->gops);
dd120af2d5f8f3 Masami Hiramatsu (Google  2024-06-03   973) 
dd120af2d5f8f3 Masami Hiramatsu (Google  2024-06-03   974) 		if (fixture->error_str && !printed) {
dd120af2d5f8f3 Masami Hiramatsu (Google  2024-06-03   975) 			pr_cont("*** %s ***", fixture->error_str);
dd120af2d5f8f3 Masami Hiramatsu (Google  2024-06-03   976) 			printed = true;
dd120af2d5f8f3 Masami Hiramatsu (Google  2024-06-03   977) 		}
dd120af2d5f8f3 Masami Hiramatsu (Google  2024-06-03   978) 	}
dd120af2d5f8f3 Masami Hiramatsu (Google  2024-06-03   979) 	return printed ? -1 : 0;
dd120af2d5f8f3 Masami Hiramatsu (Google  2024-06-03   980) }
dd120af2d5f8f3 Masami Hiramatsu (Google  2024-06-03   981) 
47c3c70aa36971 Steven Rostedt (VMware    2024-06-03   982) /* Test the storage passed across function_graph entry and return */
47c3c70aa36971 Steven Rostedt (VMware    2024-06-03   983) static __init int test_graph_storage(void)
47c3c70aa36971 Steven Rostedt (VMware    2024-06-03   984) {
47c3c70aa36971 Steven Rostedt (VMware    2024-06-03   985) 	int ret;
47c3c70aa36971 Steven Rostedt (VMware    2024-06-03   986) 
dd120af2d5f8f3 Masami Hiramatsu (Google  2024-06-03   987) 	ret = test_graph_storage_single(&store_bytes[0]);
dd120af2d5f8f3 Masami Hiramatsu (Google  2024-06-03   988) 	if (ret)
dd120af2d5f8f3 Masami Hiramatsu (Google  2024-06-03   989) 		return ret;
dd120af2d5f8f3 Masami Hiramatsu (Google  2024-06-03   990) 	ret = test_graph_storage_single(&store_bytes[1]);
47c3c70aa36971 Steven Rostedt (VMware    2024-06-03   991) 	if (ret)
47c3c70aa36971 Steven Rostedt (VMware    2024-06-03   992) 		return ret;
dd120af2d5f8f3 Masami Hiramatsu (Google  2024-06-03   993) 	ret = test_graph_storage_single(&store_bytes[2]);
47c3c70aa36971 Steven Rostedt (VMware    2024-06-03   994) 	if (ret)
47c3c70aa36971 Steven Rostedt (VMware    2024-06-03   995) 		return ret;
dd120af2d5f8f3 Masami Hiramatsu (Google  2024-06-03   996) 	ret = test_graph_storage_single(&store_bytes[3]);
47c3c70aa36971 Steven Rostedt (VMware    2024-06-03   997) 	if (ret)
47c3c70aa36971 Steven Rostedt (VMware    2024-06-03   998) 		return ret;
dd120af2d5f8f3 Masami Hiramatsu (Google  2024-06-03   999) 	ret = test_graph_storage_multi();
47c3c70aa36971 Steven Rostedt (VMware    2024-06-03  1000) 	if (ret)
47c3c70aa36971 Steven Rostedt (VMware    2024-06-03  1001) 		return ret;
47c3c70aa36971 Steven Rostedt (VMware    2024-06-03  1002) 	return 0;
47c3c70aa36971 Steven Rostedt (VMware    2024-06-03  1003) }
47c3c70aa36971 Steven Rostedt (VMware    2024-06-03  1004) #else
47c3c70aa36971 Steven Rostedt (VMware    2024-06-03  1005) static inline int test_graph_storage(void) { return 0; }
47c3c70aa36971 Steven Rostedt (VMware    2024-06-03  1006) #endif /* CONFIG_DYNAMIC_FTRACE */
47c3c70aa36971 Steven Rostedt (VMware    2024-06-03  1007) 
cf586b61f80229 Frederic Weisbecker       2009-03-22  1008  /* Maximum number of functions to trace before diagnosing a hang */
cf586b61f80229 Frederic Weisbecker       2009-03-22  1009  #define GRAPH_MAX_FUNC_TEST	100000000
cf586b61f80229 Frederic Weisbecker       2009-03-22  1010  
cf586b61f80229 Frederic Weisbecker       2009-03-22  1011  static unsigned int graph_hang_thresh;
cf586b61f80229 Frederic Weisbecker       2009-03-22  1012  
cf586b61f80229 Frederic Weisbecker       2009-03-22  1013  /* Wrap the real function entry probe to avoid possible hanging */
37238abe3cb47b Steven Rostedt (VMware    2024-06-03  1014) static int trace_graph_entry_watchdog(struct ftrace_graph_ent *trace,
37238abe3cb47b Steven Rostedt (VMware    2024-06-03  1015) 				      struct fgraph_ops *gops)
cf586b61f80229 Frederic Weisbecker       2009-03-22  1016  {
cf586b61f80229 Frederic Weisbecker       2009-03-22  1017  	/* This is harmlessly racy, we want to approximately detect a hang */
cf586b61f80229 Frederic Weisbecker       2009-03-22  1018  	if (unlikely(++graph_hang_thresh > GRAPH_MAX_FUNC_TEST)) {
cf586b61f80229 Frederic Weisbecker       2009-03-22  1019  		ftrace_graph_stop();
cf586b61f80229 Frederic Weisbecker       2009-03-22  1020  		printk(KERN_WARNING "BUG: Function graph tracer hang!\n");
19f0423fd55c30 Huang Yiwei               2024-02-23  1021  		if (ftrace_dump_on_oops_enabled()) {
7fe70b579c9e3d Steven Rostedt (Red Hat   2013-03-15  1022) 			ftrace_dump(DUMP_ALL);
7fe70b579c9e3d Steven Rostedt (Red Hat   2013-03-15  1023) 			/* ftrace_dump() disables tracing */
7fe70b579c9e3d Steven Rostedt (Red Hat   2013-03-15  1024) 			tracing_on();
7fe70b579c9e3d Steven Rostedt (Red Hat   2013-03-15  1025) 		}
cf586b61f80229 Frederic Weisbecker       2009-03-22  1026  		return 0;
cf586b61f80229 Frederic Weisbecker       2009-03-22  1027  	}
cf586b61f80229 Frederic Weisbecker       2009-03-22  1028  
37238abe3cb47b Steven Rostedt (VMware    2024-06-03 @1029) 	return trace_graph_entry(trace, gops);
cf586b61f80229 Frederic Weisbecker       2009-03-22  1030  }
cf586b61f80229 Frederic Weisbecker       2009-03-22  1031  

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ