[zanussi-trace:ftrace/cleanup-hist-func-v1 2/2] kernel/trace/trace_events_trigger.c:815:26: error: variable 'trigger_ops' is uninitialized when used here

From: kernel test robot
Date: Sat Nov 06 2021 - 07:13:10 EST


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: x86_64-buildonly-randconfig-r006-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=x86_64

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

All errors (new ones prefixed by >>):

kernel/trace/trace_events_trigger.c:685:6: error: no previous prototype for function 'event_trigger_remove' [-Werror,-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: error: variable 'trigger_ops' is uninitialized when used here [-Werror,-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 errors 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@xxxxxxxxxxxxxxx>
:::::: CC: Steven Rostedt <rostedt@xxxxxxxxxxx>

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

Attachment: .config.gz
Description: application/gzip