All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: Tom Zanussi <zanussi@kernel.org>
Cc: llvm@lists.linux.dev, kbuild-all@lists.01.org,
	linux-kernel@vger.kernel.org
Subject: [zanussi-trace:ftrace/cleanup-hist-func-v1 2/2] kernel/trace/trace_events_trigger.c:815:26: warning: variable 'trigger_ops' is uninitialized when used here
Date: Sat, 6 Nov 2021 19:15:50 +0800	[thread overview]
Message-ID: <202111061940.qM73Nx1d-lkp@intel.com> (raw)

[-- Attachment #1: Type: text/plain, Size: 15858 bytes --]

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/zanussi/linux-trace.git ftrace/cleanup-hist-func-v1
head:   61eeb0efea39a7cae67ea43f3fe553559e0eb2b7
commit: 61eeb0efea39a7cae67ea43f3fe553559e0eb2b7 [2/2] tracing: Have existing event_command implementations use helpers
config: i386-buildonly-randconfig-r001-20211105 (attached as .config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project 627868263cd4d57c230b61904483a3dad9e1a1da)
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
        # https://git.kernel.org/pub/scm/linux/kernel/git/zanussi/linux-trace.git/commit/?id=61eeb0efea39a7cae67ea43f3fe553559e0eb2b7
        git remote add zanussi-trace https://git.kernel.org/pub/scm/linux/kernel/git/zanussi/linux-trace.git
        git fetch --no-tags zanussi-trace ftrace/cleanup-hist-func-v1
        git checkout 61eeb0efea39a7cae67ea43f3fe553559e0eb2b7
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 ARCH=i386 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All warnings (new ones prefixed by >>):

   kernel/trace/trace_events_trigger.c:685:6: warning: no previous prototype for function 'event_trigger_remove' [-Wmissing-prototypes]
   void event_trigger_remove(struct event_command *cmd_ops,
        ^
   kernel/trace/trace_events_trigger.c:685:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
   void event_trigger_remove(struct event_command *cmd_ops,
   ^
   static 
>> kernel/trace/trace_events_trigger.c:815:26: warning: variable 'trigger_ops' is uninitialized when used here [-Wuninitialized]
                   cmd_ops->unreg(glob+1, trigger_ops, trigger_data, file);
                                          ^~~~~~~~~~~
   kernel/trace/trace_events_trigger.c:800:39: note: initialize the variable 'trigger_ops' to silence this warning
           struct event_trigger_ops *trigger_ops;
                                                ^
                                                 = NULL
   2 warnings generated.


vim +/trigger_ops +815 kernel/trace/trace_events_trigger.c

bc058fce125e07 Tom Zanussi              2021-11-05  684  
bc058fce125e07 Tom Zanussi              2021-11-05 @685  void event_trigger_remove(struct event_command *cmd_ops,
bc058fce125e07 Tom Zanussi              2021-11-05  686  			  struct trace_event_file *file,
bc058fce125e07 Tom Zanussi              2021-11-05  687  			  char *glob,
bc058fce125e07 Tom Zanussi              2021-11-05  688  			  char *cmd,
bc058fce125e07 Tom Zanussi              2021-11-05  689  			  char *trigger,
bc058fce125e07 Tom Zanussi              2021-11-05  690  			  struct event_trigger_data **trigger_data)
bc058fce125e07 Tom Zanussi              2021-11-05  691  {
bc058fce125e07 Tom Zanussi              2021-11-05  692  	struct event_trigger_ops *trigger_ops;
bc058fce125e07 Tom Zanussi              2021-11-05  693  
bc058fce125e07 Tom Zanussi              2021-11-05  694  	trigger_ops = cmd_ops->get_trigger_ops(cmd, trigger);
bc058fce125e07 Tom Zanussi              2021-11-05  695  
bc058fce125e07 Tom Zanussi              2021-11-05  696  	cmd_ops->unreg(glob+1, trigger_ops, *trigger_data, file);
bc058fce125e07 Tom Zanussi              2021-11-05  697  
bc058fce125e07 Tom Zanussi              2021-11-05  698  	kfree(*trigger_data);
bc058fce125e07 Tom Zanussi              2021-11-05  699  
bc058fce125e07 Tom Zanussi              2021-11-05  700  	*trigger_data = NULL;
bc058fce125e07 Tom Zanussi              2021-11-05  701  }
bc058fce125e07 Tom Zanussi              2021-11-05  702  
bc058fce125e07 Tom Zanussi              2021-11-05  703  int event_trigger_parse_num(char *trigger,
bc058fce125e07 Tom Zanussi              2021-11-05  704  			    struct event_trigger_data *trigger_data)
bc058fce125e07 Tom Zanussi              2021-11-05  705  {
bc058fce125e07 Tom Zanussi              2021-11-05  706  	char *number;
bc058fce125e07 Tom Zanussi              2021-11-05  707  	int ret = 0;
bc058fce125e07 Tom Zanussi              2021-11-05  708  
bc058fce125e07 Tom Zanussi              2021-11-05  709  	if (trigger) {
bc058fce125e07 Tom Zanussi              2021-11-05  710  		number = strsep(&trigger, ":");
bc058fce125e07 Tom Zanussi              2021-11-05  711  
bc058fce125e07 Tom Zanussi              2021-11-05  712  		if (!strlen(number))
bc058fce125e07 Tom Zanussi              2021-11-05  713  			return -EINVAL;
bc058fce125e07 Tom Zanussi              2021-11-05  714  
bc058fce125e07 Tom Zanussi              2021-11-05  715  		/*
bc058fce125e07 Tom Zanussi              2021-11-05  716  		 * We use the callback data field (which is a pointer)
bc058fce125e07 Tom Zanussi              2021-11-05  717  		 * as our counter.
bc058fce125e07 Tom Zanussi              2021-11-05  718  		 */
bc058fce125e07 Tom Zanussi              2021-11-05  719  		ret = kstrtoul(number, 0, &trigger_data->count);
bc058fce125e07 Tom Zanussi              2021-11-05  720  	}
bc058fce125e07 Tom Zanussi              2021-11-05  721  
bc058fce125e07 Tom Zanussi              2021-11-05  722  	return ret;
bc058fce125e07 Tom Zanussi              2021-11-05  723  }
bc058fce125e07 Tom Zanussi              2021-11-05  724  
bc058fce125e07 Tom Zanussi              2021-11-05  725  int event_trigger_set_filter(struct event_command *cmd_ops,
bc058fce125e07 Tom Zanussi              2021-11-05  726  			     struct trace_event_file *file,
bc058fce125e07 Tom Zanussi              2021-11-05  727  			     char *param,
bc058fce125e07 Tom Zanussi              2021-11-05  728  			     struct event_trigger_data *trigger_data)
bc058fce125e07 Tom Zanussi              2021-11-05  729  {
bc058fce125e07 Tom Zanussi              2021-11-05  730  	if (param && cmd_ops->set_filter)
bc058fce125e07 Tom Zanussi              2021-11-05  731  		return cmd_ops->set_filter(param, trigger_data, file);
bc058fce125e07 Tom Zanussi              2021-11-05  732  
bc058fce125e07 Tom Zanussi              2021-11-05  733  	return 0;
bc058fce125e07 Tom Zanussi              2021-11-05  734  }
bc058fce125e07 Tom Zanussi              2021-11-05  735  
bc058fce125e07 Tom Zanussi              2021-11-05  736  void event_trigger_reset_filter(struct event_command *cmd_ops,
bc058fce125e07 Tom Zanussi              2021-11-05  737  				struct event_trigger_data *trigger_data)
bc058fce125e07 Tom Zanussi              2021-11-05  738  {
bc058fce125e07 Tom Zanussi              2021-11-05  739  	if (cmd_ops->set_filter)
bc058fce125e07 Tom Zanussi              2021-11-05  740  		cmd_ops->set_filter(NULL, trigger_data, NULL);
bc058fce125e07 Tom Zanussi              2021-11-05  741  }
bc058fce125e07 Tom Zanussi              2021-11-05  742  
bc058fce125e07 Tom Zanussi              2021-11-05  743  int event_trigger_register(struct event_command *cmd_ops,
bc058fce125e07 Tom Zanussi              2021-11-05  744  			   struct trace_event_file *file,
bc058fce125e07 Tom Zanussi              2021-11-05  745  			   char *glob,
bc058fce125e07 Tom Zanussi              2021-11-05  746  			   char *cmd,
bc058fce125e07 Tom Zanussi              2021-11-05  747  			   char *trigger,
bc058fce125e07 Tom Zanussi              2021-11-05  748  			   struct event_trigger_data *trigger_data,
bc058fce125e07 Tom Zanussi              2021-11-05  749  			   int *n_registered)
bc058fce125e07 Tom Zanussi              2021-11-05  750  {
bc058fce125e07 Tom Zanussi              2021-11-05  751  	struct event_trigger_ops *trigger_ops;
bc058fce125e07 Tom Zanussi              2021-11-05  752  	int ret;
bc058fce125e07 Tom Zanussi              2021-11-05  753  
bc058fce125e07 Tom Zanussi              2021-11-05  754  	if (n_registered)
bc058fce125e07 Tom Zanussi              2021-11-05  755  		*n_registered = 0;
bc058fce125e07 Tom Zanussi              2021-11-05  756  
bc058fce125e07 Tom Zanussi              2021-11-05  757  	trigger_ops = cmd_ops->get_trigger_ops(cmd, trigger);
bc058fce125e07 Tom Zanussi              2021-11-05  758  
bc058fce125e07 Tom Zanussi              2021-11-05  759  	ret = cmd_ops->reg(glob, trigger_ops, trigger_data, file);
bc058fce125e07 Tom Zanussi              2021-11-05  760  	/*
bc058fce125e07 Tom Zanussi              2021-11-05  761  	 * The above returns on success the # of functions enabled,
bc058fce125e07 Tom Zanussi              2021-11-05  762  	 * but if it didn't find any functions it returns zero.
bc058fce125e07 Tom Zanussi              2021-11-05  763  	 * Consider no functions a failure too.
bc058fce125e07 Tom Zanussi              2021-11-05  764  	 */
bc058fce125e07 Tom Zanussi              2021-11-05  765  	if (!ret) {
bc058fce125e07 Tom Zanussi              2021-11-05  766  		cmd_ops->unreg(glob, trigger_ops, trigger_data, file);
bc058fce125e07 Tom Zanussi              2021-11-05  767  		ret = -ENOENT;
bc058fce125e07 Tom Zanussi              2021-11-05  768  	} else if (ret > 0) {
bc058fce125e07 Tom Zanussi              2021-11-05  769  		if (n_registered)
bc058fce125e07 Tom Zanussi              2021-11-05  770  			*n_registered = ret;
bc058fce125e07 Tom Zanussi              2021-11-05  771  		/* Just return zero, not the number of enabled functions */
bc058fce125e07 Tom Zanussi              2021-11-05  772  		ret = 0;
bc058fce125e07 Tom Zanussi              2021-11-05  773  	}
bc058fce125e07 Tom Zanussi              2021-11-05  774  
bc058fce125e07 Tom Zanussi              2021-11-05  775  	return ret;
bc058fce125e07 Tom Zanussi              2021-11-05  776  }
bc058fce125e07 Tom Zanussi              2021-11-05  777  
2a2df321158817 Tom Zanussi              2013-10-24  778  /**
2a2df321158817 Tom Zanussi              2013-10-24  779   * event_trigger_callback - Generic event_command @func implementation
2a2df321158817 Tom Zanussi              2013-10-24  780   * @cmd_ops: The command ops, used for trigger registration
7f1d2f8210195c Steven Rostedt (Red Hat  2015-05-05  781)  * @file: The trace_event_file associated with the event
2a2df321158817 Tom Zanussi              2013-10-24  782   * @glob: The raw string used to register the trigger
2a2df321158817 Tom Zanussi              2013-10-24  783   * @cmd: The cmd portion of the string used to register the trigger
2a2df321158817 Tom Zanussi              2013-10-24  784   * @param: The params portion of the string used to register the trigger
2a2df321158817 Tom Zanussi              2013-10-24  785   *
2a2df321158817 Tom Zanussi              2013-10-24  786   * Common implementation for event command parsing and trigger
2a2df321158817 Tom Zanussi              2013-10-24  787   * instantiation.
2a2df321158817 Tom Zanussi              2013-10-24  788   *
2a2df321158817 Tom Zanussi              2013-10-24  789   * Usually used directly as the @func method in event command
2a2df321158817 Tom Zanussi              2013-10-24  790   * implementations.
2a2df321158817 Tom Zanussi              2013-10-24  791   *
2a2df321158817 Tom Zanussi              2013-10-24  792   * Return: 0 on success, errno otherwise
2a2df321158817 Tom Zanussi              2013-10-24  793   */
2a2df321158817 Tom Zanussi              2013-10-24  794  static int
2a2df321158817 Tom Zanussi              2013-10-24  795  event_trigger_callback(struct event_command *cmd_ops,
7f1d2f8210195c Steven Rostedt (Red Hat  2015-05-05  796) 		       struct trace_event_file *file,
2a2df321158817 Tom Zanussi              2013-10-24  797  		       char *glob, char *cmd, char *param)
2a2df321158817 Tom Zanussi              2013-10-24  798  {
2a2df321158817 Tom Zanussi              2013-10-24  799  	struct event_trigger_data *trigger_data;
2a2df321158817 Tom Zanussi              2013-10-24  800  	struct event_trigger_ops *trigger_ops;
2a2df321158817 Tom Zanussi              2013-10-24  801  	char *trigger = NULL;
61eeb0efea39a7 Tom Zanussi              2021-11-05  802  	bool remove;
2a2df321158817 Tom Zanussi              2013-10-24  803  	int ret;
2a2df321158817 Tom Zanussi              2013-10-24  804  
61eeb0efea39a7 Tom Zanussi              2021-11-05  805  	ret = event_trigger_check(glob, &trigger, &param, &remove, false, true);
61eeb0efea39a7 Tom Zanussi              2021-11-05  806  	if (ret)
61eeb0efea39a7 Tom Zanussi              2021-11-05  807  		return ret;
2a2df321158817 Tom Zanussi              2013-10-24  808  
2a2df321158817 Tom Zanussi              2013-10-24  809  	ret = -ENOMEM;
61eeb0efea39a7 Tom Zanussi              2021-11-05  810  	trigger_data = event_trigger_alloc(cmd_ops, trigger, cmd, file);
2a2df321158817 Tom Zanussi              2013-10-24  811  	if (!trigger_data)
2a2df321158817 Tom Zanussi              2013-10-24  812  		goto out;
2a2df321158817 Tom Zanussi              2013-10-24  813  
61eeb0efea39a7 Tom Zanussi              2021-11-05  814  	if (remove) {
2a2df321158817 Tom Zanussi              2013-10-24 @815  		cmd_ops->unreg(glob+1, trigger_ops, trigger_data, file);
2a2df321158817 Tom Zanussi              2013-10-24  816  		ret = 0;
2a2df321158817 Tom Zanussi              2013-10-24  817  		goto out;
2a2df321158817 Tom Zanussi              2013-10-24  818  	}
2a2df321158817 Tom Zanussi              2013-10-24  819  
61eeb0efea39a7 Tom Zanussi              2021-11-05  820  	ret = event_trigger_parse_num(trigger, trigger_data);
2a2df321158817 Tom Zanussi              2013-10-24  821  	if (ret)
2a2df321158817 Tom Zanussi              2013-10-24  822  		goto out_free;
2a2df321158817 Tom Zanussi              2013-10-24  823  
61eeb0efea39a7 Tom Zanussi              2021-11-05  824  	ret = event_trigger_set_filter(cmd_ops, file, param, trigger_data);
2a2df321158817 Tom Zanussi              2013-10-24  825  	if (ret < 0)
2a2df321158817 Tom Zanussi              2013-10-24  826  		goto out_free;
2a2df321158817 Tom Zanussi              2013-10-24  827  
1863c387259b62 Steven Rostedt (VMware   2018-07-24  828) 	/* Up the trigger_data count to make sure reg doesn't free it on failure */
1863c387259b62 Steven Rostedt (VMware   2018-07-24  829) 	event_trigger_init(trigger_ops, trigger_data);
61eeb0efea39a7 Tom Zanussi              2021-11-05  830  
61eeb0efea39a7 Tom Zanussi              2021-11-05  831  	ret = event_trigger_register(cmd_ops, file, glob, cmd, trigger, trigger_data, NULL);
61eeb0efea39a7 Tom Zanussi              2021-11-05  832  	if (ret)
61eeb0efea39a7 Tom Zanussi              2021-11-05  833  		goto out_free;
1863c387259b62 Steven Rostedt (VMware   2018-07-24  834) 
1863c387259b62 Steven Rostedt (VMware   2018-07-24  835) 	/* Down the counter of trigger_data or free it if not used anymore */
1863c387259b62 Steven Rostedt (VMware   2018-07-24  836) 	event_trigger_free(trigger_ops, trigger_data);
2a2df321158817 Tom Zanussi              2013-10-24  837   out:
2a2df321158817 Tom Zanussi              2013-10-24  838  	return ret;
2a2df321158817 Tom Zanussi              2013-10-24  839   out_free:
61eeb0efea39a7 Tom Zanussi              2021-11-05  840  	event_trigger_reset_filter(cmd_ops, trigger_data);
2a2df321158817 Tom Zanussi              2013-10-24  841  	kfree(trigger_data);
2a2df321158817 Tom Zanussi              2013-10-24  842  	goto out;
2a2df321158817 Tom Zanussi              2013-10-24  843  }
2a2df321158817 Tom Zanussi              2013-10-24  844  

:::::: The code at line 815 was first introduced by commit
:::::: 2a2df321158817811c5dc206dce808e0aa9f6d89 tracing: Add 'traceon' and 'traceoff' event trigger commands

:::::: TO: Tom Zanussi <tom.zanussi@linux.intel.com>
:::::: CC: Steven Rostedt <rostedt@goodmis.org>

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 35405 bytes --]

WARNING: multiple messages have this Message-ID (diff)
From: kernel test robot <lkp@intel.com>
To: kbuild-all@lists.01.org
Subject: [zanussi-trace:ftrace/cleanup-hist-func-v1 2/2] kernel/trace/trace_events_trigger.c:815:26: warning: variable 'trigger_ops' is uninitialized when used here
Date: Sat, 06 Nov 2021 19:15:50 +0800	[thread overview]
Message-ID: <202111061940.qM73Nx1d-lkp@intel.com> (raw)

[-- Attachment #1: Type: text/plain, Size: 16067 bytes --]

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/zanussi/linux-trace.git ftrace/cleanup-hist-func-v1
head:   61eeb0efea39a7cae67ea43f3fe553559e0eb2b7
commit: 61eeb0efea39a7cae67ea43f3fe553559e0eb2b7 [2/2] tracing: Have existing event_command implementations use helpers
config: i386-buildonly-randconfig-r001-20211105 (attached as .config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project 627868263cd4d57c230b61904483a3dad9e1a1da)
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
        # https://git.kernel.org/pub/scm/linux/kernel/git/zanussi/linux-trace.git/commit/?id=61eeb0efea39a7cae67ea43f3fe553559e0eb2b7
        git remote add zanussi-trace https://git.kernel.org/pub/scm/linux/kernel/git/zanussi/linux-trace.git
        git fetch --no-tags zanussi-trace ftrace/cleanup-hist-func-v1
        git checkout 61eeb0efea39a7cae67ea43f3fe553559e0eb2b7
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 ARCH=i386 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All warnings (new ones prefixed by >>):

   kernel/trace/trace_events_trigger.c:685:6: warning: no previous prototype for function 'event_trigger_remove' [-Wmissing-prototypes]
   void event_trigger_remove(struct event_command *cmd_ops,
        ^
   kernel/trace/trace_events_trigger.c:685:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
   void event_trigger_remove(struct event_command *cmd_ops,
   ^
   static 
>> kernel/trace/trace_events_trigger.c:815:26: warning: variable 'trigger_ops' is uninitialized when used here [-Wuninitialized]
                   cmd_ops->unreg(glob+1, trigger_ops, trigger_data, file);
                                          ^~~~~~~~~~~
   kernel/trace/trace_events_trigger.c:800:39: note: initialize the variable 'trigger_ops' to silence this warning
           struct event_trigger_ops *trigger_ops;
                                                ^
                                                 = NULL
   2 warnings generated.


vim +/trigger_ops +815 kernel/trace/trace_events_trigger.c

bc058fce125e07 Tom Zanussi              2021-11-05  684  
bc058fce125e07 Tom Zanussi              2021-11-05 @685  void event_trigger_remove(struct event_command *cmd_ops,
bc058fce125e07 Tom Zanussi              2021-11-05  686  			  struct trace_event_file *file,
bc058fce125e07 Tom Zanussi              2021-11-05  687  			  char *glob,
bc058fce125e07 Tom Zanussi              2021-11-05  688  			  char *cmd,
bc058fce125e07 Tom Zanussi              2021-11-05  689  			  char *trigger,
bc058fce125e07 Tom Zanussi              2021-11-05  690  			  struct event_trigger_data **trigger_data)
bc058fce125e07 Tom Zanussi              2021-11-05  691  {
bc058fce125e07 Tom Zanussi              2021-11-05  692  	struct event_trigger_ops *trigger_ops;
bc058fce125e07 Tom Zanussi              2021-11-05  693  
bc058fce125e07 Tom Zanussi              2021-11-05  694  	trigger_ops = cmd_ops->get_trigger_ops(cmd, trigger);
bc058fce125e07 Tom Zanussi              2021-11-05  695  
bc058fce125e07 Tom Zanussi              2021-11-05  696  	cmd_ops->unreg(glob+1, trigger_ops, *trigger_data, file);
bc058fce125e07 Tom Zanussi              2021-11-05  697  
bc058fce125e07 Tom Zanussi              2021-11-05  698  	kfree(*trigger_data);
bc058fce125e07 Tom Zanussi              2021-11-05  699  
bc058fce125e07 Tom Zanussi              2021-11-05  700  	*trigger_data = NULL;
bc058fce125e07 Tom Zanussi              2021-11-05  701  }
bc058fce125e07 Tom Zanussi              2021-11-05  702  
bc058fce125e07 Tom Zanussi              2021-11-05  703  int event_trigger_parse_num(char *trigger,
bc058fce125e07 Tom Zanussi              2021-11-05  704  			    struct event_trigger_data *trigger_data)
bc058fce125e07 Tom Zanussi              2021-11-05  705  {
bc058fce125e07 Tom Zanussi              2021-11-05  706  	char *number;
bc058fce125e07 Tom Zanussi              2021-11-05  707  	int ret = 0;
bc058fce125e07 Tom Zanussi              2021-11-05  708  
bc058fce125e07 Tom Zanussi              2021-11-05  709  	if (trigger) {
bc058fce125e07 Tom Zanussi              2021-11-05  710  		number = strsep(&trigger, ":");
bc058fce125e07 Tom Zanussi              2021-11-05  711  
bc058fce125e07 Tom Zanussi              2021-11-05  712  		if (!strlen(number))
bc058fce125e07 Tom Zanussi              2021-11-05  713  			return -EINVAL;
bc058fce125e07 Tom Zanussi              2021-11-05  714  
bc058fce125e07 Tom Zanussi              2021-11-05  715  		/*
bc058fce125e07 Tom Zanussi              2021-11-05  716  		 * We use the callback data field (which is a pointer)
bc058fce125e07 Tom Zanussi              2021-11-05  717  		 * as our counter.
bc058fce125e07 Tom Zanussi              2021-11-05  718  		 */
bc058fce125e07 Tom Zanussi              2021-11-05  719  		ret = kstrtoul(number, 0, &trigger_data->count);
bc058fce125e07 Tom Zanussi              2021-11-05  720  	}
bc058fce125e07 Tom Zanussi              2021-11-05  721  
bc058fce125e07 Tom Zanussi              2021-11-05  722  	return ret;
bc058fce125e07 Tom Zanussi              2021-11-05  723  }
bc058fce125e07 Tom Zanussi              2021-11-05  724  
bc058fce125e07 Tom Zanussi              2021-11-05  725  int event_trigger_set_filter(struct event_command *cmd_ops,
bc058fce125e07 Tom Zanussi              2021-11-05  726  			     struct trace_event_file *file,
bc058fce125e07 Tom Zanussi              2021-11-05  727  			     char *param,
bc058fce125e07 Tom Zanussi              2021-11-05  728  			     struct event_trigger_data *trigger_data)
bc058fce125e07 Tom Zanussi              2021-11-05  729  {
bc058fce125e07 Tom Zanussi              2021-11-05  730  	if (param && cmd_ops->set_filter)
bc058fce125e07 Tom Zanussi              2021-11-05  731  		return cmd_ops->set_filter(param, trigger_data, file);
bc058fce125e07 Tom Zanussi              2021-11-05  732  
bc058fce125e07 Tom Zanussi              2021-11-05  733  	return 0;
bc058fce125e07 Tom Zanussi              2021-11-05  734  }
bc058fce125e07 Tom Zanussi              2021-11-05  735  
bc058fce125e07 Tom Zanussi              2021-11-05  736  void event_trigger_reset_filter(struct event_command *cmd_ops,
bc058fce125e07 Tom Zanussi              2021-11-05  737  				struct event_trigger_data *trigger_data)
bc058fce125e07 Tom Zanussi              2021-11-05  738  {
bc058fce125e07 Tom Zanussi              2021-11-05  739  	if (cmd_ops->set_filter)
bc058fce125e07 Tom Zanussi              2021-11-05  740  		cmd_ops->set_filter(NULL, trigger_data, NULL);
bc058fce125e07 Tom Zanussi              2021-11-05  741  }
bc058fce125e07 Tom Zanussi              2021-11-05  742  
bc058fce125e07 Tom Zanussi              2021-11-05  743  int event_trigger_register(struct event_command *cmd_ops,
bc058fce125e07 Tom Zanussi              2021-11-05  744  			   struct trace_event_file *file,
bc058fce125e07 Tom Zanussi              2021-11-05  745  			   char *glob,
bc058fce125e07 Tom Zanussi              2021-11-05  746  			   char *cmd,
bc058fce125e07 Tom Zanussi              2021-11-05  747  			   char *trigger,
bc058fce125e07 Tom Zanussi              2021-11-05  748  			   struct event_trigger_data *trigger_data,
bc058fce125e07 Tom Zanussi              2021-11-05  749  			   int *n_registered)
bc058fce125e07 Tom Zanussi              2021-11-05  750  {
bc058fce125e07 Tom Zanussi              2021-11-05  751  	struct event_trigger_ops *trigger_ops;
bc058fce125e07 Tom Zanussi              2021-11-05  752  	int ret;
bc058fce125e07 Tom Zanussi              2021-11-05  753  
bc058fce125e07 Tom Zanussi              2021-11-05  754  	if (n_registered)
bc058fce125e07 Tom Zanussi              2021-11-05  755  		*n_registered = 0;
bc058fce125e07 Tom Zanussi              2021-11-05  756  
bc058fce125e07 Tom Zanussi              2021-11-05  757  	trigger_ops = cmd_ops->get_trigger_ops(cmd, trigger);
bc058fce125e07 Tom Zanussi              2021-11-05  758  
bc058fce125e07 Tom Zanussi              2021-11-05  759  	ret = cmd_ops->reg(glob, trigger_ops, trigger_data, file);
bc058fce125e07 Tom Zanussi              2021-11-05  760  	/*
bc058fce125e07 Tom Zanussi              2021-11-05  761  	 * The above returns on success the # of functions enabled,
bc058fce125e07 Tom Zanussi              2021-11-05  762  	 * but if it didn't find any functions it returns zero.
bc058fce125e07 Tom Zanussi              2021-11-05  763  	 * Consider no functions a failure too.
bc058fce125e07 Tom Zanussi              2021-11-05  764  	 */
bc058fce125e07 Tom Zanussi              2021-11-05  765  	if (!ret) {
bc058fce125e07 Tom Zanussi              2021-11-05  766  		cmd_ops->unreg(glob, trigger_ops, trigger_data, file);
bc058fce125e07 Tom Zanussi              2021-11-05  767  		ret = -ENOENT;
bc058fce125e07 Tom Zanussi              2021-11-05  768  	} else if (ret > 0) {
bc058fce125e07 Tom Zanussi              2021-11-05  769  		if (n_registered)
bc058fce125e07 Tom Zanussi              2021-11-05  770  			*n_registered = ret;
bc058fce125e07 Tom Zanussi              2021-11-05  771  		/* Just return zero, not the number of enabled functions */
bc058fce125e07 Tom Zanussi              2021-11-05  772  		ret = 0;
bc058fce125e07 Tom Zanussi              2021-11-05  773  	}
bc058fce125e07 Tom Zanussi              2021-11-05  774  
bc058fce125e07 Tom Zanussi              2021-11-05  775  	return ret;
bc058fce125e07 Tom Zanussi              2021-11-05  776  }
bc058fce125e07 Tom Zanussi              2021-11-05  777  
2a2df321158817 Tom Zanussi              2013-10-24  778  /**
2a2df321158817 Tom Zanussi              2013-10-24  779   * event_trigger_callback - Generic event_command @func implementation
2a2df321158817 Tom Zanussi              2013-10-24  780   * @cmd_ops: The command ops, used for trigger registration
7f1d2f8210195c Steven Rostedt (Red Hat  2015-05-05  781)  * @file: The trace_event_file associated with the event
2a2df321158817 Tom Zanussi              2013-10-24  782   * @glob: The raw string used to register the trigger
2a2df321158817 Tom Zanussi              2013-10-24  783   * @cmd: The cmd portion of the string used to register the trigger
2a2df321158817 Tom Zanussi              2013-10-24  784   * @param: The params portion of the string used to register the trigger
2a2df321158817 Tom Zanussi              2013-10-24  785   *
2a2df321158817 Tom Zanussi              2013-10-24  786   * Common implementation for event command parsing and trigger
2a2df321158817 Tom Zanussi              2013-10-24  787   * instantiation.
2a2df321158817 Tom Zanussi              2013-10-24  788   *
2a2df321158817 Tom Zanussi              2013-10-24  789   * Usually used directly as the @func method in event command
2a2df321158817 Tom Zanussi              2013-10-24  790   * implementations.
2a2df321158817 Tom Zanussi              2013-10-24  791   *
2a2df321158817 Tom Zanussi              2013-10-24  792   * Return: 0 on success, errno otherwise
2a2df321158817 Tom Zanussi              2013-10-24  793   */
2a2df321158817 Tom Zanussi              2013-10-24  794  static int
2a2df321158817 Tom Zanussi              2013-10-24  795  event_trigger_callback(struct event_command *cmd_ops,
7f1d2f8210195c Steven Rostedt (Red Hat  2015-05-05  796) 		       struct trace_event_file *file,
2a2df321158817 Tom Zanussi              2013-10-24  797  		       char *glob, char *cmd, char *param)
2a2df321158817 Tom Zanussi              2013-10-24  798  {
2a2df321158817 Tom Zanussi              2013-10-24  799  	struct event_trigger_data *trigger_data;
2a2df321158817 Tom Zanussi              2013-10-24  800  	struct event_trigger_ops *trigger_ops;
2a2df321158817 Tom Zanussi              2013-10-24  801  	char *trigger = NULL;
61eeb0efea39a7 Tom Zanussi              2021-11-05  802  	bool remove;
2a2df321158817 Tom Zanussi              2013-10-24  803  	int ret;
2a2df321158817 Tom Zanussi              2013-10-24  804  
61eeb0efea39a7 Tom Zanussi              2021-11-05  805  	ret = event_trigger_check(glob, &trigger, &param, &remove, false, true);
61eeb0efea39a7 Tom Zanussi              2021-11-05  806  	if (ret)
61eeb0efea39a7 Tom Zanussi              2021-11-05  807  		return ret;
2a2df321158817 Tom Zanussi              2013-10-24  808  
2a2df321158817 Tom Zanussi              2013-10-24  809  	ret = -ENOMEM;
61eeb0efea39a7 Tom Zanussi              2021-11-05  810  	trigger_data = event_trigger_alloc(cmd_ops, trigger, cmd, file);
2a2df321158817 Tom Zanussi              2013-10-24  811  	if (!trigger_data)
2a2df321158817 Tom Zanussi              2013-10-24  812  		goto out;
2a2df321158817 Tom Zanussi              2013-10-24  813  
61eeb0efea39a7 Tom Zanussi              2021-11-05  814  	if (remove) {
2a2df321158817 Tom Zanussi              2013-10-24 @815  		cmd_ops->unreg(glob+1, trigger_ops, trigger_data, file);
2a2df321158817 Tom Zanussi              2013-10-24  816  		ret = 0;
2a2df321158817 Tom Zanussi              2013-10-24  817  		goto out;
2a2df321158817 Tom Zanussi              2013-10-24  818  	}
2a2df321158817 Tom Zanussi              2013-10-24  819  
61eeb0efea39a7 Tom Zanussi              2021-11-05  820  	ret = event_trigger_parse_num(trigger, trigger_data);
2a2df321158817 Tom Zanussi              2013-10-24  821  	if (ret)
2a2df321158817 Tom Zanussi              2013-10-24  822  		goto out_free;
2a2df321158817 Tom Zanussi              2013-10-24  823  
61eeb0efea39a7 Tom Zanussi              2021-11-05  824  	ret = event_trigger_set_filter(cmd_ops, file, param, trigger_data);
2a2df321158817 Tom Zanussi              2013-10-24  825  	if (ret < 0)
2a2df321158817 Tom Zanussi              2013-10-24  826  		goto out_free;
2a2df321158817 Tom Zanussi              2013-10-24  827  
1863c387259b62 Steven Rostedt (VMware   2018-07-24  828) 	/* Up the trigger_data count to make sure reg doesn't free it on failure */
1863c387259b62 Steven Rostedt (VMware   2018-07-24  829) 	event_trigger_init(trigger_ops, trigger_data);
61eeb0efea39a7 Tom Zanussi              2021-11-05  830  
61eeb0efea39a7 Tom Zanussi              2021-11-05  831  	ret = event_trigger_register(cmd_ops, file, glob, cmd, trigger, trigger_data, NULL);
61eeb0efea39a7 Tom Zanussi              2021-11-05  832  	if (ret)
61eeb0efea39a7 Tom Zanussi              2021-11-05  833  		goto out_free;
1863c387259b62 Steven Rostedt (VMware   2018-07-24  834) 
1863c387259b62 Steven Rostedt (VMware   2018-07-24  835) 	/* Down the counter of trigger_data or free it if not used anymore */
1863c387259b62 Steven Rostedt (VMware   2018-07-24  836) 	event_trigger_free(trigger_ops, trigger_data);
2a2df321158817 Tom Zanussi              2013-10-24  837   out:
2a2df321158817 Tom Zanussi              2013-10-24  838  	return ret;
2a2df321158817 Tom Zanussi              2013-10-24  839   out_free:
61eeb0efea39a7 Tom Zanussi              2021-11-05  840  	event_trigger_reset_filter(cmd_ops, trigger_data);
2a2df321158817 Tom Zanussi              2013-10-24  841  	kfree(trigger_data);
2a2df321158817 Tom Zanussi              2013-10-24  842  	goto out;
2a2df321158817 Tom Zanussi              2013-10-24  843  }
2a2df321158817 Tom Zanussi              2013-10-24  844  

:::::: The code@line 815 was first introduced by commit
:::::: 2a2df321158817811c5dc206dce808e0aa9f6d89 tracing: Add 'traceon' and 'traceoff' event trigger commands

:::::: TO: Tom Zanussi <tom.zanussi@linux.intel.com>
:::::: CC: Steven Rostedt <rostedt@goodmis.org>

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 35405 bytes --]

             reply	other threads:[~2021-11-06 11:16 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-11-06 11:15 kernel test robot [this message]
2021-11-06 11:15 ` [zanussi-trace:ftrace/cleanup-hist-func-v1 2/2] kernel/trace/trace_events_trigger.c:815:26: warning: variable 'trigger_ops' is uninitialized when used here kernel test robot

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=202111061940.qM73Nx1d-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=kbuild-all@lists.01.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=llvm@lists.linux.dev \
    --cc=zanussi@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.