mirror of
https://github.com/torvalds/linux.git
synced 2026-05-30 01:53:29 +02:00
bpftool: Using the right format specifiers
Fixed some formatting specifiers errors, such as using %d for int and %u for unsigned int, as well as other byte-length types. Perform type cast using the type derived from the data type itself, for example, if it's originally an int, it will be cast to unsigned int if forced to unsigned. Signed-off-by: Jiayuan Chen <jiayuan.chen@linux.dev> Signed-off-by: Andrii Nakryiko <andrii@kernel.org> Link: https://lore.kernel.org/bpf/20250311112809.81901-3-jiayuan.chen@linux.dev
This commit is contained in:
parent
8d86767be9
commit
3775be3417
|
|
@ -202,7 +202,7 @@ void print_bpf_insn(const struct bpf_insn_cbs *cbs,
|
|||
insn->dst_reg, class == BPF_ALU ? 'w' : 'r',
|
||||
insn->dst_reg);
|
||||
} else if (is_addr_space_cast(insn)) {
|
||||
verbose(cbs->private_data, "(%02x) r%d = addr_space_cast(r%d, %d, %d)\n",
|
||||
verbose(cbs->private_data, "(%02x) r%d = addr_space_cast(r%d, %u, %u)\n",
|
||||
insn->code, insn->dst_reg,
|
||||
insn->src_reg, ((u32)insn->imm) >> 16, (u16)insn->imm);
|
||||
} else if (is_mov_percpu_addr(insn)) {
|
||||
|
|
@ -381,7 +381,7 @@ void print_bpf_insn(const struct bpf_insn_cbs *cbs,
|
|||
insn->code, class == BPF_JMP32 ? 'w' : 'r',
|
||||
insn->dst_reg,
|
||||
bpf_jmp_string[BPF_OP(insn->code) >> 4],
|
||||
insn->imm, insn->off);
|
||||
(u32)insn->imm, insn->off);
|
||||
}
|
||||
} else {
|
||||
verbose(cbs->private_data, "(%02x) %s\n",
|
||||
|
|
|
|||
|
|
@ -253,7 +253,7 @@ static int dump_btf_type(const struct btf *btf, __u32 id,
|
|||
if (btf_kflag(t))
|
||||
printf("\n\t'%s' val=%d", name, v->val);
|
||||
else
|
||||
printf("\n\t'%s' val=%u", name, v->val);
|
||||
printf("\n\t'%s' val=%u", name, (__u32)v->val);
|
||||
}
|
||||
}
|
||||
if (json_output)
|
||||
|
|
@ -1022,7 +1022,7 @@ static int do_dump(int argc, char **argv)
|
|||
for (i = 0; i < root_type_cnt; i++) {
|
||||
if (root_type_ids[i] == root_id) {
|
||||
err = -EINVAL;
|
||||
p_err("duplicate root_id %d supplied", root_id);
|
||||
p_err("duplicate root_id %u supplied", root_id);
|
||||
goto done;
|
||||
}
|
||||
}
|
||||
|
|
@ -1132,7 +1132,7 @@ build_btf_type_table(struct hashmap *tab, enum bpf_obj_type type,
|
|||
break;
|
||||
default:
|
||||
err = -1;
|
||||
p_err("unexpected object type: %d", type);
|
||||
p_err("unexpected object type: %u", type);
|
||||
goto err_free;
|
||||
}
|
||||
if (err) {
|
||||
|
|
@ -1155,7 +1155,7 @@ build_btf_type_table(struct hashmap *tab, enum bpf_obj_type type,
|
|||
break;
|
||||
default:
|
||||
err = -1;
|
||||
p_err("unexpected object type: %d", type);
|
||||
p_err("unexpected object type: %u", type);
|
||||
goto err_free;
|
||||
}
|
||||
if (fd < 0) {
|
||||
|
|
@ -1188,7 +1188,7 @@ build_btf_type_table(struct hashmap *tab, enum bpf_obj_type type,
|
|||
break;
|
||||
default:
|
||||
err = -1;
|
||||
p_err("unexpected object type: %d", type);
|
||||
p_err("unexpected object type: %u", type);
|
||||
goto err_free;
|
||||
}
|
||||
if (!btf_id)
|
||||
|
|
@ -1254,12 +1254,12 @@ show_btf_plain(struct bpf_btf_info *info, int fd,
|
|||
|
||||
n = 0;
|
||||
hashmap__for_each_key_entry(btf_prog_table, entry, info->id) {
|
||||
printf("%s%lu", n++ == 0 ? " prog_ids " : ",", entry->value);
|
||||
printf("%s%lu", n++ == 0 ? " prog_ids " : ",", (unsigned long)entry->value);
|
||||
}
|
||||
|
||||
n = 0;
|
||||
hashmap__for_each_key_entry(btf_map_table, entry, info->id) {
|
||||
printf("%s%lu", n++ == 0 ? " map_ids " : ",", entry->value);
|
||||
printf("%s%lu", n++ == 0 ? " map_ids " : ",", (unsigned long)entry->value);
|
||||
}
|
||||
|
||||
emit_obj_refs_plain(refs_table, info->id, "\n\tpids ");
|
||||
|
|
|
|||
|
|
@ -653,7 +653,7 @@ static int __btf_dumper_type_only(const struct btf *btf, __u32 type_id,
|
|||
case BTF_KIND_ARRAY:
|
||||
array = (struct btf_array *)(t + 1);
|
||||
BTF_PRINT_TYPE(array->type);
|
||||
BTF_PRINT_ARG("[%d]", array->nelems);
|
||||
BTF_PRINT_ARG("[%u]", array->nelems);
|
||||
break;
|
||||
case BTF_KIND_PTR:
|
||||
BTF_PRINT_TYPE(t->type);
|
||||
|
|
|
|||
|
|
@ -191,7 +191,7 @@ static int show_bpf_prog(int id, enum bpf_attach_type attach_type,
|
|||
if (attach_btf_name)
|
||||
printf(" %-15s", attach_btf_name);
|
||||
else if (info.attach_btf_id)
|
||||
printf(" attach_btf_obj_id=%d attach_btf_id=%d",
|
||||
printf(" attach_btf_obj_id=%u attach_btf_id=%u",
|
||||
info.attach_btf_obj_id, info.attach_btf_id);
|
||||
printf("\n");
|
||||
}
|
||||
|
|
|
|||
|
|
@ -714,7 +714,7 @@ ifindex_to_arch(__u32 ifindex, __u64 ns_dev, __u64 ns_ino, const char **opt)
|
|||
int vendor_id;
|
||||
|
||||
if (!ifindex_to_name_ns(ifindex, ns_dev, ns_ino, devname)) {
|
||||
p_err("Can't get net device name for ifindex %d: %s", ifindex,
|
||||
p_err("Can't get net device name for ifindex %u: %s", ifindex,
|
||||
strerror(errno));
|
||||
return NULL;
|
||||
}
|
||||
|
|
@ -739,7 +739,7 @@ ifindex_to_arch(__u32 ifindex, __u64 ns_dev, __u64 ns_ino, const char **opt)
|
|||
/* No NFP support in LLVM, we have no valid triple to return. */
|
||||
default:
|
||||
p_err("Can't get arch name for device vendor id 0x%04x",
|
||||
vendor_id);
|
||||
(unsigned int)vendor_id);
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -343,7 +343,8 @@ int disasm_print_insn(unsigned char *image, ssize_t len, int opcodes,
|
|||
{
|
||||
const struct bpf_line_info *linfo = NULL;
|
||||
unsigned int nr_skip = 0;
|
||||
int count, i, pc = 0;
|
||||
int count, i;
|
||||
unsigned int pc = 0;
|
||||
disasm_ctx_t ctx;
|
||||
|
||||
if (!len)
|
||||
|
|
|
|||
|
|
@ -91,15 +91,15 @@ print_bpf_output(void *private_data, int cpu, struct perf_event_header *event)
|
|||
jsonw_end_object(json_wtr);
|
||||
} else {
|
||||
if (e->header.type == PERF_RECORD_SAMPLE) {
|
||||
printf("== @%lld.%09lld CPU: %d index: %d =====\n",
|
||||
printf("== @%llu.%09llu CPU: %d index: %d =====\n",
|
||||
e->time / 1000000000ULL, e->time % 1000000000ULL,
|
||||
cpu, idx);
|
||||
fprint_hex(stdout, e->data, e->size, " ");
|
||||
printf("\n");
|
||||
} else if (e->header.type == PERF_RECORD_LOST) {
|
||||
printf("lost %lld events\n", lost->lost);
|
||||
printf("lost %llu events\n", lost->lost);
|
||||
} else {
|
||||
printf("unknown event type=%d size=%d\n",
|
||||
printf("unknown event type=%u size=%u\n",
|
||||
e->header.type, e->header.size);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -476,7 +476,7 @@ static void __show_dev_tc_bpf(const struct ip_devname_ifindex *dev,
|
|||
for (i = 0; i < optq.count; i++) {
|
||||
NET_START_OBJECT;
|
||||
NET_DUMP_STR("devname", "%s", dev->devname);
|
||||
NET_DUMP_UINT("ifindex", "(%u)", dev->ifindex);
|
||||
NET_DUMP_UINT("ifindex", "(%u)", (unsigned int)dev->ifindex);
|
||||
NET_DUMP_STR("kind", " %s", attach_loc_strings[loc]);
|
||||
ret = __show_dev_tc_bpf_name(prog_ids[i], prog_name,
|
||||
sizeof(prog_name));
|
||||
|
|
@ -831,7 +831,7 @@ static void show_link_netfilter(void)
|
|||
if (err) {
|
||||
if (errno == ENOENT)
|
||||
break;
|
||||
p_err("can't get next link: %s (id %d)", strerror(errno), id);
|
||||
p_err("can't get next link: %s (id %u)", strerror(errno), id);
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -45,7 +45,7 @@ static int do_xdp_dump_one(struct nlattr *attr, unsigned int ifindex,
|
|||
NET_START_OBJECT;
|
||||
if (name)
|
||||
NET_DUMP_STR("devname", "%s", name);
|
||||
NET_DUMP_UINT("ifindex", "(%d)", ifindex);
|
||||
NET_DUMP_UINT("ifindex", "(%u)", ifindex);
|
||||
|
||||
if (mode == XDP_ATTACHED_MULTI) {
|
||||
if (json_output) {
|
||||
|
|
@ -74,7 +74,7 @@ int do_xdp_dump(struct ifinfomsg *ifinfo, struct nlattr **tb)
|
|||
if (!tb[IFLA_XDP])
|
||||
return 0;
|
||||
|
||||
return do_xdp_dump_one(tb[IFLA_XDP], ifinfo->ifi_index,
|
||||
return do_xdp_dump_one(tb[IFLA_XDP], (unsigned int)ifinfo->ifi_index,
|
||||
libbpf_nla_getattr_str(tb[IFLA_IFNAME]));
|
||||
}
|
||||
|
||||
|
|
@ -168,7 +168,7 @@ int do_filter_dump(struct tcmsg *info, struct nlattr **tb, const char *kind,
|
|||
NET_START_OBJECT;
|
||||
if (devname[0] != '\0')
|
||||
NET_DUMP_STR("devname", "%s", devname);
|
||||
NET_DUMP_UINT("ifindex", "(%u)", ifindex);
|
||||
NET_DUMP_UINT("ifindex", "(%u)", (unsigned int)ifindex);
|
||||
NET_DUMP_STR("kind", " %s", kind);
|
||||
ret = do_bpf_filter_dump(tb[TCA_OPTIONS]);
|
||||
NET_END_OBJECT_FINAL;
|
||||
|
|
|
|||
|
|
@ -521,10 +521,10 @@ static void print_prog_header_plain(struct bpf_prog_info *info, int fd)
|
|||
print_dev_plain(info->ifindex, info->netns_dev, info->netns_ino);
|
||||
printf("%s", info->gpl_compatible ? " gpl" : "");
|
||||
if (info->run_time_ns)
|
||||
printf(" run_time_ns %lld run_cnt %lld",
|
||||
printf(" run_time_ns %llu run_cnt %llu",
|
||||
info->run_time_ns, info->run_cnt);
|
||||
if (info->recursion_misses)
|
||||
printf(" recursion_misses %lld", info->recursion_misses);
|
||||
printf(" recursion_misses %llu", info->recursion_misses);
|
||||
printf("\n");
|
||||
}
|
||||
|
||||
|
|
@ -569,7 +569,7 @@ static void print_prog_plain(struct bpf_prog_info *info, int fd, bool orphaned)
|
|||
}
|
||||
|
||||
if (info->btf_id)
|
||||
printf("\n\tbtf_id %d", info->btf_id);
|
||||
printf("\n\tbtf_id %u", info->btf_id);
|
||||
|
||||
emit_obj_refs_plain(refs_table, info->id, "\n\tpids ");
|
||||
|
||||
|
|
@ -1164,7 +1164,7 @@ static int get_run_data(const char *fname, void **data_ptr, unsigned int *size)
|
|||
}
|
||||
if (nb_read > buf_size - block_size) {
|
||||
if (buf_size == UINT32_MAX) {
|
||||
p_err("data_in/ctx_in is too long (max: %d)",
|
||||
p_err("data_in/ctx_in is too long (max: %u)",
|
||||
UINT32_MAX);
|
||||
goto err_free;
|
||||
}
|
||||
|
|
@ -2252,7 +2252,7 @@ static char *profile_target_name(int tgt_fd)
|
|||
|
||||
t = btf__type_by_id(btf, func_info.type_id);
|
||||
if (!t) {
|
||||
p_err("btf %d doesn't have type %d",
|
||||
p_err("btf %u doesn't have type %u",
|
||||
info.btf_id, func_info.type_id);
|
||||
goto out;
|
||||
}
|
||||
|
|
@ -2330,7 +2330,7 @@ static int profile_open_perf_events(struct profiler_bpf *obj)
|
|||
continue;
|
||||
for (cpu = 0; cpu < obj->rodata->num_cpu; cpu++) {
|
||||
if (profile_open_perf_event(m, cpu, map_fd)) {
|
||||
p_err("failed to create event %s on cpu %d",
|
||||
p_err("failed to create event %s on cpu %u",
|
||||
metrics[m].name, cpu);
|
||||
return -1;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -78,7 +78,7 @@ static bool get_tracefs_pipe(char *mnt)
|
|||
return false;
|
||||
|
||||
/* Allow room for NULL terminating byte and pipe file name */
|
||||
snprintf(format, sizeof(format), "%%*s %%%zds %%99s %%*s %%*d %%*d\\n",
|
||||
snprintf(format, sizeof(format), "%%*s %%%zus %%99s %%*s %%*d %%*d\\n",
|
||||
PATH_MAX - strlen(pipe_name) - 1);
|
||||
while (fscanf(fp, format, mnt, type) == 2)
|
||||
if (strcmp(type, fstype) == 0) {
|
||||
|
|
|
|||
|
|
@ -199,13 +199,13 @@ static const char *print_imm(void *private_data,
|
|||
|
||||
if (insn->src_reg == BPF_PSEUDO_MAP_FD)
|
||||
snprintf(dd->scratch_buff, sizeof(dd->scratch_buff),
|
||||
"map[id:%u]", insn->imm);
|
||||
"map[id:%d]", insn->imm);
|
||||
else if (insn->src_reg == BPF_PSEUDO_MAP_VALUE)
|
||||
snprintf(dd->scratch_buff, sizeof(dd->scratch_buff),
|
||||
"map[id:%u][0]+%u", insn->imm, (insn + 1)->imm);
|
||||
"map[id:%d][0]+%d", insn->imm, (insn + 1)->imm);
|
||||
else if (insn->src_reg == BPF_PSEUDO_MAP_IDX_VALUE)
|
||||
snprintf(dd->scratch_buff, sizeof(dd->scratch_buff),
|
||||
"map[idx:%u]+%u", insn->imm, (insn + 1)->imm);
|
||||
"map[idx:%d]+%d", insn->imm, (insn + 1)->imm);
|
||||
else if (insn->src_reg == BPF_PSEUDO_FUNC)
|
||||
snprintf(dd->scratch_buff, sizeof(dd->scratch_buff),
|
||||
"subprog[%+d]", insn->imm);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user