All of lore.kernel.org
 help / color / mirror / Atom feed
* kernel/trace/trace_events_hist.c:6174 event_hist_trigger_parse() error: we previously assumed 'glob' could be null (see line 6166)
@ 2022-01-26 10:14 ` Dan Carpenter
  0 siblings, 0 replies; 10+ messages in thread
From: kernel test robot @ 2022-01-24 16:54 UTC (permalink / raw)
  To: kbuild

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

CC: kbuild-all(a)lists.01.org
CC: linux-kernel(a)vger.kernel.org
TO: Tom Zanussi <zanussi@kernel.org>
CC: Steven Rostedt <rostedt@goodmis.org>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   dd81e1c7d5fb126e5fbc5c9e334d7b3ec29a16a0
commit: 9ec5a7d16899ed9062cc4c3dd3a13e1771411ab3 tracing: Change event_command func() to parse()
date:   2 weeks ago
:::::: branch date: 25 hours ago
:::::: commit date: 2 weeks ago
config: x86_64-randconfig-m001-20220124 (https://download.01.org/0day-ci/archive/20220125/202201250054.975KVd1O-lkp(a)intel.com/config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0

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

smatch warnings:
kernel/trace/trace_events_hist.c:6174 event_hist_trigger_parse() error: we previously assumed 'glob' could be null (see line 6166)

vim +/glob +6174 kernel/trace/trace_events_hist.c

52a7f16dedff8f Tom Zanussi             2016-03-03  6148  
9ec5a7d16899ed Tom Zanussi             2022-01-10  6149  static int event_hist_trigger_parse(struct event_command *cmd_ops,
7ef224d1d0e3a1 Tom Zanussi             2016-03-03  6150  				    struct trace_event_file *file,
7ef224d1d0e3a1 Tom Zanussi             2016-03-03  6151  				    char *glob, char *cmd, char *param)
7ef224d1d0e3a1 Tom Zanussi             2016-03-03  6152  {
7ef224d1d0e3a1 Tom Zanussi             2016-03-03  6153  	unsigned int hist_trigger_bits = TRACING_MAP_BITS_DEFAULT;
7ef224d1d0e3a1 Tom Zanussi             2016-03-03  6154  	struct event_trigger_data *trigger_data;
7ef224d1d0e3a1 Tom Zanussi             2016-03-03  6155  	struct hist_trigger_attrs *attrs;
7ef224d1d0e3a1 Tom Zanussi             2016-03-03  6156  	struct event_trigger_ops *trigger_ops;
7ef224d1d0e3a1 Tom Zanussi             2016-03-03  6157  	struct hist_trigger_data *hist_data;
4b147936fa5096 Tom Zanussi             2018-01-15  6158  	struct synth_event *se;
4b147936fa5096 Tom Zanussi             2018-01-15  6159  	const char *se_name;
30350d65ac5676 Tom Zanussi             2018-01-15  6160  	bool remove = false;
c5eac6ee8bc5d3 Kalesh Singh            2021-10-25  6161  	char *trigger, *p, *start;
7ef224d1d0e3a1 Tom Zanussi             2016-03-03  6162  	int ret = 0;
7ef224d1d0e3a1 Tom Zanussi             2016-03-03  6163  
0e2b81f7b52a1c Masami Hiramatsu        2018-11-05  6164  	lockdep_assert_held(&event_mutex);
0e2b81f7b52a1c Masami Hiramatsu        2018-11-05  6165  
f404da6e1d46ce Tom Zanussi             2018-01-15 @6166  	if (glob && strlen(glob)) {
f404da6e1d46ce Tom Zanussi             2018-01-15  6167  		hist_err_clear();
a1a05bb40e229d Tom Zanussi             2019-03-31  6168  		last_cmd_set(file, param);
f404da6e1d46ce Tom Zanussi             2018-01-15  6169  	}
f404da6e1d46ce Tom Zanussi             2018-01-15  6170  
7ef224d1d0e3a1 Tom Zanussi             2016-03-03  6171  	if (!param)
7ef224d1d0e3a1 Tom Zanussi             2016-03-03  6172  		return -EINVAL;
7ef224d1d0e3a1 Tom Zanussi             2016-03-03  6173  
30350d65ac5676 Tom Zanussi             2018-01-15 @6174  	if (glob[0] == '!')
30350d65ac5676 Tom Zanussi             2018-01-15  6175  		remove = true;
30350d65ac5676 Tom Zanussi             2018-01-15  6176  
ec5ce098754108 Tom Zanussi             2018-01-15  6177  	/*
ec5ce098754108 Tom Zanussi             2018-01-15  6178  	 * separate the trigger from the filter (k:v [if filter])
ec5ce098754108 Tom Zanussi             2018-01-15  6179  	 * allowing for whitespace in the trigger
ec5ce098754108 Tom Zanussi             2018-01-15  6180  	 */
ec5ce098754108 Tom Zanussi             2018-01-15  6181  	p = trigger = param;
ec5ce098754108 Tom Zanussi             2018-01-15  6182  	do {
ec5ce098754108 Tom Zanussi             2018-01-15  6183  		p = strstr(p, "if");
ec5ce098754108 Tom Zanussi             2018-01-15  6184  		if (!p)
ec5ce098754108 Tom Zanussi             2018-01-15  6185  			break;
ec5ce098754108 Tom Zanussi             2018-01-15  6186  		if (p == param)
ec5ce098754108 Tom Zanussi             2018-01-15  6187  			return -EINVAL;
ec5ce098754108 Tom Zanussi             2018-01-15  6188  		if (*(p - 1) != ' ' && *(p - 1) != '\t') {
ec5ce098754108 Tom Zanussi             2018-01-15  6189  			p++;
ec5ce098754108 Tom Zanussi             2018-01-15  6190  			continue;
ec5ce098754108 Tom Zanussi             2018-01-15  6191  		}
2f31ed9308cc9e Tom Zanussi             2018-12-18  6192  		if (p >= param + strlen(param) - (sizeof("if") - 1) - 1)
7ef224d1d0e3a1 Tom Zanussi             2016-03-03  6193  			return -EINVAL;
2f31ed9308cc9e Tom Zanussi             2018-12-18  6194  		if (*(p + sizeof("if") - 1) != ' ' && *(p + sizeof("if") - 1) != '\t') {
ec5ce098754108 Tom Zanussi             2018-01-15  6195  			p++;
ec5ce098754108 Tom Zanussi             2018-01-15  6196  			continue;
ec5ce098754108 Tom Zanussi             2018-01-15  6197  		}
ec5ce098754108 Tom Zanussi             2018-01-15  6198  		break;
ec5ce098754108 Tom Zanussi             2018-01-15  6199  	} while (p);
ec5ce098754108 Tom Zanussi             2018-01-15  6200  
ec5ce098754108 Tom Zanussi             2018-01-15  6201  	if (!p)
ec5ce098754108 Tom Zanussi             2018-01-15  6202  		param = NULL;
ec5ce098754108 Tom Zanussi             2018-01-15  6203  	else {
ec5ce098754108 Tom Zanussi             2018-01-15  6204  		*(p - 1) = '\0';
ec5ce098754108 Tom Zanussi             2018-01-15  6205  		param = strstrip(p);
ec5ce098754108 Tom Zanussi             2018-01-15  6206  		trigger = strstrip(trigger);
ec5ce098754108 Tom Zanussi             2018-01-15  6207  	}
7ef224d1d0e3a1 Tom Zanussi             2016-03-03  6208  
c5eac6ee8bc5d3 Kalesh Singh            2021-10-25  6209  	/*
c5eac6ee8bc5d3 Kalesh Singh            2021-10-25  6210  	 * To simplify arithmetic expression parsing, replace occurrences of
c5eac6ee8bc5d3 Kalesh Singh            2021-10-25  6211  	 * '.sym-offset' modifier with '.symXoffset'
c5eac6ee8bc5d3 Kalesh Singh            2021-10-25  6212  	 */
c5eac6ee8bc5d3 Kalesh Singh            2021-10-25  6213  	start = strstr(trigger, ".sym-offset");
c5eac6ee8bc5d3 Kalesh Singh            2021-10-25  6214  	while (start) {
c5eac6ee8bc5d3 Kalesh Singh            2021-10-25  6215  		*(start + 4) = 'X';
c5eac6ee8bc5d3 Kalesh Singh            2021-10-25  6216  		start = strstr(start + 11, ".sym-offset");
feea69ec121f06 kernel test robot       2021-10-30  6217  	}
c5eac6ee8bc5d3 Kalesh Singh            2021-10-25  6218  
d0cd871ba0d613 Steven Rostedt (VMware  2019-04-01  6219) 	attrs = parse_hist_trigger_attrs(file->tr, trigger);
7ef224d1d0e3a1 Tom Zanussi             2016-03-03  6220  	if (IS_ERR(attrs))
7ef224d1d0e3a1 Tom Zanussi             2016-03-03  6221  		return PTR_ERR(attrs);
7ef224d1d0e3a1 Tom Zanussi             2016-03-03  6222  
7ef224d1d0e3a1 Tom Zanussi             2016-03-03  6223  	if (attrs->map_bits)
7ef224d1d0e3a1 Tom Zanussi             2016-03-03  6224  		hist_trigger_bits = attrs->map_bits;
7ef224d1d0e3a1 Tom Zanussi             2016-03-03  6225  
30350d65ac5676 Tom Zanussi             2018-01-15  6226  	hist_data = create_hist_data(hist_trigger_bits, attrs, file, remove);
7ef224d1d0e3a1 Tom Zanussi             2016-03-03  6227  	if (IS_ERR(hist_data)) {
7ef224d1d0e3a1 Tom Zanussi             2016-03-03  6228  		destroy_hist_trigger_attrs(attrs);
7ef224d1d0e3a1 Tom Zanussi             2016-03-03  6229  		return PTR_ERR(hist_data);
7ef224d1d0e3a1 Tom Zanussi             2016-03-03  6230  	}
7ef224d1d0e3a1 Tom Zanussi             2016-03-03  6231  
7ef224d1d0e3a1 Tom Zanussi             2016-03-03  6232  	trigger_ops = cmd_ops->get_trigger_ops(cmd, trigger);
7ef224d1d0e3a1 Tom Zanussi             2016-03-03  6233  
7ef224d1d0e3a1 Tom Zanussi             2016-03-03  6234  	trigger_data = kzalloc(sizeof(*trigger_data), GFP_KERNEL);
4b147936fa5096 Tom Zanussi             2018-01-15  6235  	if (!trigger_data) {
4b147936fa5096 Tom Zanussi             2018-01-15  6236  		ret = -ENOMEM;
7ef224d1d0e3a1 Tom Zanussi             2016-03-03  6237  		goto out_free;
4b147936fa5096 Tom Zanussi             2018-01-15  6238  	}
7ef224d1d0e3a1 Tom Zanussi             2016-03-03  6239  
7ef224d1d0e3a1 Tom Zanussi             2016-03-03  6240  	trigger_data->count = -1;
7ef224d1d0e3a1 Tom Zanussi             2016-03-03  6241  	trigger_data->ops = trigger_ops;
7ef224d1d0e3a1 Tom Zanussi             2016-03-03  6242  	trigger_data->cmd_ops = cmd_ops;
7ef224d1d0e3a1 Tom Zanussi             2016-03-03  6243  
7ef224d1d0e3a1 Tom Zanussi             2016-03-03  6244  	INIT_LIST_HEAD(&trigger_data->list);
7ef224d1d0e3a1 Tom Zanussi             2016-03-03  6245  	RCU_INIT_POINTER(trigger_data->filter, NULL);
7ef224d1d0e3a1 Tom Zanussi             2016-03-03  6246  
7ef224d1d0e3a1 Tom Zanussi             2016-03-03  6247  	trigger_data->private_data = hist_data;
7ef224d1d0e3a1 Tom Zanussi             2016-03-03  6248  
52a7f16dedff8f Tom Zanussi             2016-03-03  6249  	/* if param is non-empty, it's supposed to be a filter */
52a7f16dedff8f Tom Zanussi             2016-03-03  6250  	if (param && cmd_ops->set_filter) {
52a7f16dedff8f Tom Zanussi             2016-03-03  6251  		ret = cmd_ops->set_filter(param, trigger_data, file);
52a7f16dedff8f Tom Zanussi             2016-03-03  6252  		if (ret < 0)
52a7f16dedff8f Tom Zanussi             2016-03-03  6253  			goto out_free;
52a7f16dedff8f Tom Zanussi             2016-03-03  6254  	}
52a7f16dedff8f Tom Zanussi             2016-03-03  6255  
30350d65ac5676 Tom Zanussi             2018-01-15  6256  	if (remove) {
4b147936fa5096 Tom Zanussi             2018-01-15  6257  		if (!have_hist_trigger_match(trigger_data, file))
4b147936fa5096 Tom Zanussi             2018-01-15  6258  			goto out_free;
4b147936fa5096 Tom Zanussi             2018-01-15  6259  
067fe038e70f6e Tom Zanussi             2018-01-15  6260  		if (hist_trigger_check_refs(trigger_data, file)) {
067fe038e70f6e Tom Zanussi             2018-01-15  6261  			ret = -EBUSY;
067fe038e70f6e Tom Zanussi             2018-01-15  6262  			goto out_free;
067fe038e70f6e Tom Zanussi             2018-01-15  6263  		}
067fe038e70f6e Tom Zanussi             2018-01-15  6264  
7ef224d1d0e3a1 Tom Zanussi             2016-03-03  6265  		cmd_ops->unreg(glob+1, trigger_ops, trigger_data, file);
4b147936fa5096 Tom Zanussi             2018-01-15  6266  		se_name = trace_event_name(file->event_call);
4b147936fa5096 Tom Zanussi             2018-01-15  6267  		se = find_synth_event(se_name);
4b147936fa5096 Tom Zanussi             2018-01-15  6268  		if (se)
4b147936fa5096 Tom Zanussi             2018-01-15  6269  			se->ref--;
7ef224d1d0e3a1 Tom Zanussi             2016-03-03  6270  		ret = 0;
7ef224d1d0e3a1 Tom Zanussi             2016-03-03  6271  		goto out_free;
7ef224d1d0e3a1 Tom Zanussi             2016-03-03  6272  	}
7ef224d1d0e3a1 Tom Zanussi             2016-03-03  6273  
7ef224d1d0e3a1 Tom Zanussi             2016-03-03  6274  	ret = cmd_ops->reg(glob, trigger_ops, trigger_data, file);
7ef224d1d0e3a1 Tom Zanussi             2016-03-03  6275  	/*
7ef224d1d0e3a1 Tom Zanussi             2016-03-03  6276  	 * The above returns on success the # of triggers registered,
7ef224d1d0e3a1 Tom Zanussi             2016-03-03  6277  	 * but if it didn't register any it returns zero.  Consider no
7ef224d1d0e3a1 Tom Zanussi             2016-03-03  6278  	 * triggers registered a failure too.
7ef224d1d0e3a1 Tom Zanussi             2016-03-03  6279  	 */
7ef224d1d0e3a1 Tom Zanussi             2016-03-03  6280  	if (!ret) {
e86ae9baacfa9e Tom Zanussi             2016-03-03  6281  		if (!(attrs->pause || attrs->cont || attrs->clear))
7ef224d1d0e3a1 Tom Zanussi             2016-03-03  6282  			ret = -ENOENT;
7ef224d1d0e3a1 Tom Zanussi             2016-03-03  6283  		goto out_free;
7ef224d1d0e3a1 Tom Zanussi             2016-03-03  6284  	} else if (ret < 0)
7ef224d1d0e3a1 Tom Zanussi             2016-03-03  6285  		goto out_free;
067fe038e70f6e Tom Zanussi             2018-01-15  6286  
067fe038e70f6e Tom Zanussi             2018-01-15  6287  	if (get_named_trigger_data(trigger_data))
067fe038e70f6e Tom Zanussi             2018-01-15  6288  		goto enable;
067fe038e70f6e Tom Zanussi             2018-01-15  6289  
067fe038e70f6e Tom Zanussi             2018-01-15  6290  	if (has_hist_vars(hist_data))
067fe038e70f6e Tom Zanussi             2018-01-15  6291  		save_hist_vars(hist_data);
067fe038e70f6e Tom Zanussi             2018-01-15  6292  
7d18a10c316783 Tom Zanussi             2019-02-13  6293  	ret = create_actions(hist_data);
0212e2aa30e112 Tom Zanussi             2018-01-15  6294  	if (ret)
0212e2aa30e112 Tom Zanussi             2018-01-15  6295  		goto out_unreg;
0212e2aa30e112 Tom Zanussi             2018-01-15  6296  
067fe038e70f6e Tom Zanussi             2018-01-15  6297  	ret = tracing_map_init(hist_data->map);
067fe038e70f6e Tom Zanussi             2018-01-15  6298  	if (ret)
067fe038e70f6e Tom Zanussi             2018-01-15  6299  		goto out_unreg;
067fe038e70f6e Tom Zanussi             2018-01-15  6300  enable:
067fe038e70f6e Tom Zanussi             2018-01-15  6301  	ret = hist_trigger_enable(trigger_data, file);
067fe038e70f6e Tom Zanussi             2018-01-15  6302  	if (ret)
067fe038e70f6e Tom Zanussi             2018-01-15  6303  		goto out_unreg;
067fe038e70f6e Tom Zanussi             2018-01-15  6304  
4b147936fa5096 Tom Zanussi             2018-01-15  6305  	se_name = trace_event_name(file->event_call);
4b147936fa5096 Tom Zanussi             2018-01-15  6306  	se = find_synth_event(se_name);
4b147936fa5096 Tom Zanussi             2018-01-15  6307  	if (se)
4b147936fa5096 Tom Zanussi             2018-01-15  6308  		se->ref++;
7ef224d1d0e3a1 Tom Zanussi             2016-03-03  6309  	/* Just return zero, not the number of registered triggers */
7ef224d1d0e3a1 Tom Zanussi             2016-03-03  6310  	ret = 0;
7ef224d1d0e3a1 Tom Zanussi             2016-03-03  6311   out:
f404da6e1d46ce Tom Zanussi             2018-01-15  6312  	if (ret == 0)
f404da6e1d46ce Tom Zanussi             2018-01-15  6313  		hist_err_clear();
f404da6e1d46ce Tom Zanussi             2018-01-15  6314  
7ef224d1d0e3a1 Tom Zanussi             2016-03-03  6315  	return ret;
067fe038e70f6e Tom Zanussi             2018-01-15  6316   out_unreg:
067fe038e70f6e Tom Zanussi             2018-01-15  6317  	cmd_ops->unreg(glob+1, trigger_ops, trigger_data, file);
7ef224d1d0e3a1 Tom Zanussi             2016-03-03  6318   out_free:
7ef224d1d0e3a1 Tom Zanussi             2016-03-03  6319  	if (cmd_ops->set_filter)
7ef224d1d0e3a1 Tom Zanussi             2016-03-03  6320  		cmd_ops->set_filter(NULL, trigger_data, NULL);
7ef224d1d0e3a1 Tom Zanussi             2016-03-03  6321  
067fe038e70f6e Tom Zanussi             2018-01-15  6322  	remove_hist_vars(hist_data);
067fe038e70f6e Tom Zanussi             2018-01-15  6323  
7ef224d1d0e3a1 Tom Zanussi             2016-03-03  6324  	kfree(trigger_data);
7ef224d1d0e3a1 Tom Zanussi             2016-03-03  6325  
7ef224d1d0e3a1 Tom Zanussi             2016-03-03  6326  	destroy_hist_data(hist_data);
7ef224d1d0e3a1 Tom Zanussi             2016-03-03  6327  	goto out;
7ef224d1d0e3a1 Tom Zanussi             2016-03-03  6328  }
7ef224d1d0e3a1 Tom Zanussi             2016-03-03  6329  

:::::: The code at line 6174 was first introduced by commit
:::::: 30350d65ac5676c6d08d4fc935bc9a9cb0fd4ed3 tracing: Add variable support to hist triggers

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

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

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2022-01-26 15:27 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-01-24 16:54 kernel/trace/trace_events_hist.c:6174 event_hist_trigger_parse() error: we previously assumed 'glob' could be null (see line 6166) kernel test robot
2022-01-26 10:14 ` Dan Carpenter
2022-01-26 10:14 ` Dan Carpenter
2022-01-26 14:39 ` Steven Rostedt
2022-01-26 14:39   ` Steven Rostedt
2022-01-26 14:50   ` Dan Carpenter
2022-01-26 14:50     ` Dan Carpenter
2022-01-26 14:50     ` Dan Carpenter
2022-01-26 15:27     ` Steven Rostedt
2022-01-26 15:27       ` Steven Rostedt

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.