kernel/trace/trace_kprobe.c:952: warning: Excess function parameter 'args' description in '__kprobe_event_gen_cmd_start'

From: kernel test robot
Date: Wed Oct 18 2023 - 16:34:30 EST


tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: dd72f9c7e512da377074d47d990564959b772643
commit: 2a588dd1d5d649a183a2ff6fa1b80e870cf821d8 tracing: Add kprobe event command generation functions
date: 3 years, 9 months ago
config: x86_64-randconfig-x012-20230629 (https://download.01.org/0day-ci/archive/20231019/202310190437.paI6LYJF-lkp@xxxxxxxxx/config)
compiler: gcc-12 (Debian 12.2.0-14) 12.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20231019/202310190437.paI6LYJF-lkp@xxxxxxxxx/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@xxxxxxxxx>
| Closes: https://lore.kernel.org/oe-kbuild-all/202310190437.paI6LYJF-lkp@xxxxxxxxx/

All warnings (new ones prefixed by >>):

>> kernel/trace/trace_kprobe.c:952: warning: Excess function parameter 'args' description in '__kprobe_event_gen_cmd_start'
>> kernel/trace/trace_kprobe.c:1017: warning: Excess function parameter 'args' description in '__kprobe_event_add_fields'


vim +952 kernel/trace/trace_kprobe.c

929
930 /**
931 * __kprobe_event_gen_cmd_start - Generate a kprobe event command from arg list
932 * @cmd: A pointer to the dynevent_cmd struct representing the new event
933 * @name: The name of the kprobe event
934 * @loc: The location of the kprobe event
935 * @kretprobe: Is this a return probe?
936 * @args: Variable number of arg (pairs), one pair for each field
937 *
938 * NOTE: Users normally won't want to call this function directly, but
939 * rather use the kprobe_event_gen_cmd_start() wrapper, which automatically
940 * adds a NULL to the end of the arg list. If this function is used
941 * directly, make sure the last arg in the variable arg list is NULL.
942 *
943 * Generate a kprobe event command to be executed by
944 * kprobe_event_gen_cmd_end(). This function can be used to generate the
945 * complete command or only the first part of it; in the latter case,
946 * kprobe_event_add_fields() can be used to add more fields following this.
947 *
948 * Return: 0 if successful, error otherwise.
949 */
950 int __kprobe_event_gen_cmd_start(struct dynevent_cmd *cmd, bool kretprobe,
951 const char *name, const char *loc, ...)
> 952 {
953 char buf[MAX_EVENT_NAME_LEN];
954 struct dynevent_arg arg;
955 va_list args;
956 int ret;
957
958 if (cmd->type != DYNEVENT_TYPE_KPROBE)
959 return -EINVAL;
960
961 if (kretprobe)
962 snprintf(buf, MAX_EVENT_NAME_LEN, "r:kprobes/%s", name);
963 else
964 snprintf(buf, MAX_EVENT_NAME_LEN, "p:kprobes/%s", name);
965
966 ret = dynevent_str_add(cmd, buf);
967 if (ret)
968 return ret;
969
970 dynevent_arg_init(&arg, NULL, 0);
971 arg.str = loc;
972 ret = dynevent_arg_add(cmd, &arg);
973 if (ret)
974 return ret;
975
976 va_start(args, loc);
977 for (;;) {
978 const char *field;
979
980 field = va_arg(args, const char *);
981 if (!field)
982 break;
983
984 if (++cmd->n_fields > MAX_TRACE_ARGS) {
985 ret = -EINVAL;
986 break;
987 }
988
989 arg.str = field;
990 ret = dynevent_arg_add(cmd, &arg);
991 if (ret)
992 break;
993 }
994 va_end(args);
995
996 return ret;
997 }
998 EXPORT_SYMBOL_GPL(__kprobe_event_gen_cmd_start);
999
1000 /**
1001 * __kprobe_event_add_fields - Add probe fields to a kprobe command from arg list
1002 * @cmd: A pointer to the dynevent_cmd struct representing the new event
1003 * @args: Variable number of arg (pairs), one pair for each field
1004 *
1005 * NOTE: Users normally won't want to call this function directly, but
1006 * rather use the kprobe_event_add_fields() wrapper, which
1007 * automatically adds a NULL to the end of the arg list. If this
1008 * function is used directly, make sure the last arg in the variable
1009 * arg list is NULL.
1010 *
1011 * Add probe fields to an existing kprobe command using a variable
1012 * list of args. Fields are added in the same order they're listed.
1013 *
1014 * Return: 0 if successful, error otherwise.
1015 */
1016 int __kprobe_event_add_fields(struct dynevent_cmd *cmd, ...)
> 1017 {
1018 struct dynevent_arg arg;
1019 va_list args;
1020 int ret;
1021
1022 if (cmd->type != DYNEVENT_TYPE_KPROBE)
1023 return -EINVAL;
1024
1025 dynevent_arg_init(&arg, NULL, 0);
1026
1027 va_start(args, cmd);
1028 for (;;) {
1029 const char *field;
1030
1031 field = va_arg(args, const char *);
1032 if (!field)
1033 break;
1034
1035 if (++cmd->n_fields > MAX_TRACE_ARGS) {
1036 ret = -EINVAL;
1037 break;
1038 }
1039
1040 arg.str = field;
1041 ret = dynevent_arg_add(cmd, &arg);
1042 if (ret)
1043 break;
1044 }
1045 va_end(args);
1046
1047 return ret;
1048 }
1049 EXPORT_SYMBOL_GPL(__kprobe_event_add_fields);
1050

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