commit 39080b6
Michael Forney
·
2024-03-22 06:29:18 +0000 UTC
parent 993cdf3
Remove obsolete portability patches with C23 and new cproc
29 files changed,
+3,
-3172
R pkg/iproute2/patch/0006-Avoid-non-standard-e-escape-sequence.patch =>
pkg/iproute2/patch/0005-Avoid-non-standard-e-escape-sequence.patch
+0,
-0
1@@ -1,2455 +0,0 @@
2-From af3a2d4ed7e7bb4dcf9ec448c017d1e9824b3d1e Mon Sep 17 00:00:00 2001
3-From: Michael Forney <mforney@mforney.org>
4-Date: Thu, 17 Feb 2022 22:51:00 -0800
5-Subject: [PATCH] Don't use empty initializer lists
6-
7----
8- bridge/mdb.c | 2 +-
9- bridge/vlan.c | 6 +--
10- devlink/devlink.c | 94 +++++++++++++++++++++++------------------------
11- devlink/mnlg.c | 4 +-
12- ip/ip6tunnel.c | 2 +-
13- ip/ipaddress.c | 8 ++--
14- ip/ipaddrlabel.c | 2 +-
15- ip/iplink_can.c | 2 +-
16- ip/ipmaddr.c | 2 +-
17- ip/ipntable.c | 4 +-
18- ip/iptunnel.c | 10 ++---
19- ip/iptuntap.c | 2 +-
20- ip/ipxfrm.c | 14 +++----
21- ip/xfrm_policy.c | 14 +++----
22- ip/xfrm_state.c | 12 +++---
23- lib/bpf_legacy.c | 40 ++++++++++----------
24- lib/libnetlink.c | 8 ++--
25- lib/ll_map.c | 2 +-
26- lib/rt_names.c | 3 +-
27- misc/arpd.c | 4 +-
28- misc/ss.c | 38 +++++++++----------
29- rdma/dev.c | 2 +-
30- rdma/link.c | 2 +-
31- rdma/rdma.c | 2 +-
32- rdma/res-cmid.c | 6 +--
33- rdma/res-cq.c | 6 +--
34- rdma/res-mr.c | 6 +--
35- rdma/res-pd.c | 6 +--
36- rdma/res-qp.c | 6 +--
37- rdma/res.c | 4 +-
38- rdma/utils.c | 2 +-
39- tc/e_bpf.c | 4 +-
40- tc/em_cmp.c | 2 +-
41- tc/em_ipset.c | 2 +-
42- tc/em_meta.c | 2 +-
43- tc/em_nbyte.c | 2 +-
44- tc/em_u32.c | 2 +-
45- tc/f_bpf.c | 2 +-
46- tc/f_fw.c | 2 +-
47- tc/f_u32.c | 6 +--
48- tc/m_bpf.c | 4 +-
49- tc/m_connmark.c | 2 +-
50- tc/m_csum.c | 2 +-
51- tc/m_mirred.c | 4 +-
52- tc/m_nat.c | 2 +-
53- tc/m_pedit.c | 4 +-
54- tc/m_simple.c | 2 +-
55- tc/m_tunnel_key.c | 2 +-
56- tc/m_vlan.c | 2 +-
57- tc/q_cbs.c | 2 +-
58- tc/q_choke.c | 2 +-
59- tc/q_codel.c | 2 +-
60- tc/q_fifo.c | 2 +-
61- tc/q_fq_codel.c | 2 +-
62- tc/q_gred.c | 6 +--
63- tc/q_hfsc.c | 4 +-
64- tc/q_htb.c | 2 +-
65- tc/q_multiq.c | 2 +-
66- tc/q_netem.c | 12 +++---
67- tc/q_red.c | 2 +-
68- tc/q_sfq.c | 2 +-
69- tc/q_skbprio.c | 2 +-
70- tc/q_tbf.c | 2 +-
71- tc/tc_class.c | 18 ++++-----
72- tc/tc_exec.c | 2 +-
73- tc/tc_filter.c | 12 +++---
74- tc/tc_qdisc.c | 10 ++---
75- tc/tc_stab.c | 2 +-
76- tc/tc_util.c | 6 +--
77- tipc/bearer.c | 22 +++++------
78- tipc/link.c | 34 ++++++++---------
79- tipc/media.c | 10 ++---
80- tipc/misc.c | 2 +-
81- tipc/nametable.c | 6 +--
82- tipc/node.c | 14 +++----
83- tipc/socket.c | 10 ++---
84- 76 files changed, 277 insertions(+), 278 deletions(-)
85-
86-diff --git a/bridge/mdb.c b/bridge/mdb.c
87-index ba499e49..63302110 100644
88---- a/bridge/mdb.c
89-+++ b/bridge/mdb.c
90-@@ -702,7 +702,7 @@ static int mdb_modify(int cmd, int flags, int argc, char **argv)
91- char *d = NULL, *p = NULL, *grp = NULL, *src = NULL, *mode = NULL;
92- char *dst_port = NULL, *vni = NULL, *src_vni = NULL, *via = NULL;
93- char *src_list = NULL, *proto = NULL, *dst = NULL;
94-- struct br_mdb_entry entry = {};
95-+ struct br_mdb_entry entry = {0};
96- bool set_attrs = false;
97- short vid = 0;
98-
99-diff --git a/bridge/vlan.c b/bridge/vlan.c
100-index a5035ab1..22e4554a 100644
101---- a/bridge/vlan.c
102-+++ b/bridge/vlan.c
103-@@ -128,7 +128,7 @@ static int add_tunnel_info_range(struct nlmsghdr *n, int reqsize,
104- static int add_vlan_info_range(struct nlmsghdr *n, int reqsize, __u16 vid_start,
105- int16_t vid_end, __u16 flags)
106- {
107-- struct bridge_vlan_info vinfo = {};
108-+ struct bridge_vlan_info vinfo = {0};
109-
110- vinfo.flags = flags;
111- vinfo.vid = vid_start;
112-@@ -167,7 +167,7 @@ static int vlan_modify(int cmd, int argc, char **argv)
113- short vid = -1;
114- short vid_end = -1;
115- struct rtattr *afspec;
116-- struct bridge_vlan_info vinfo = {};
117-+ struct bridge_vlan_info vinfo = {0};
118- bool tunnel_info_set = false;
119- unsigned short flags = 0;
120- __u32 tun_id_start = 0;
121-@@ -273,7 +273,7 @@ static int vlan_option_set(int argc, char **argv)
122- .n.nlmsg_type = RTM_NEWVLAN,
123- .bvm.family = PF_BRIDGE,
124- };
125-- struct bridge_vlan_info vinfo = {};
126-+ struct bridge_vlan_info vinfo = {0};
127- struct rtattr *afspec;
128- char *d = NULL;
129- short vid = -1;
130-diff --git a/devlink/devlink.c b/devlink/devlink.c
131-index dbeb6e39..10803c1c 100644
132---- a/devlink/devlink.c
133-+++ b/devlink/devlink.c
134-@@ -890,7 +890,7 @@ out:
135-
136- static int ifname_map_cb(const struct nlmsghdr *nlh, void *data)
137- {
138-- struct nlattr *tb[DEVLINK_ATTR_MAX + 1] = {};
139-+ struct nlattr *tb[DEVLINK_ATTR_MAX + 1] = {0};
140- struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
141- struct dl *dl = data;
142- const char *bus_name;
143-@@ -3201,7 +3201,7 @@ static void pr_out_eswitch(struct dl *dl, struct nlattr **tb)
144- static int cmd_dev_eswitch_show_cb(const struct nlmsghdr *nlh, void *data)
145- {
146- struct dl *dl = data;
147-- struct nlattr *tb[DEVLINK_ATTR_MAX + 1] = {};
148-+ struct nlattr *tb[DEVLINK_ATTR_MAX + 1] = {0};
149- struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
150-
151- mnl_attr_parse(nlh, sizeof(*genl), attr_cb, tb);
152-@@ -3372,7 +3372,7 @@ static const struct param_val_conv param_val_conv[] = {
153- static void pr_out_param_value(struct dl *dl, const char *nla_name,
154- int nla_type, struct nlattr *nl)
155- {
156-- struct nlattr *nla_value[DEVLINK_ATTR_MAX + 1] = {};
157-+ struct nlattr *nla_value[DEVLINK_ATTR_MAX + 1] = {0};
158- struct nlattr *val_attr;
159- const char *vstr;
160- bool conv_exists;
161-@@ -3455,7 +3455,7 @@ static void pr_out_param_value(struct dl *dl, const char *nla_name,
162- static void pr_out_param(struct dl *dl, struct nlattr **tb, bool array,
163- bool is_port_param)
164- {
165-- struct nlattr *nla_param[DEVLINK_ATTR_MAX + 1] = {};
166-+ struct nlattr *nla_param[DEVLINK_ATTR_MAX + 1] = {0};
167- struct nlattr *param_value_attr;
168- const char *nla_name;
169- int nla_type;
170-@@ -3507,7 +3507,7 @@ static void pr_out_param(struct dl *dl, struct nlattr **tb, bool array,
171- static int cmd_dev_param_show_cb(const struct nlmsghdr *nlh, void *data)
172- {
173- struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
174-- struct nlattr *tb[DEVLINK_ATTR_MAX + 1] = {};
175-+ struct nlattr *tb[DEVLINK_ATTR_MAX + 1] = {0};
176- struct dl *dl = data;
177-
178- mnl_attr_parse(nlh, sizeof(*genl), attr_cb, tb);
179-@@ -3534,8 +3534,8 @@ struct param_ctx {
180- static int cmd_dev_param_set_cb(const struct nlmsghdr *nlh, void *data)
181- {
182- struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
183-- struct nlattr *nla_param[DEVLINK_ATTR_MAX + 1] = {};
184-- struct nlattr *tb[DEVLINK_ATTR_MAX + 1] = {};
185-+ struct nlattr *nla_param[DEVLINK_ATTR_MAX + 1] = {0};
186-+ struct nlattr *tb[DEVLINK_ATTR_MAX + 1] = {0};
187- struct nlattr *param_value_attr;
188- enum devlink_param_cmode cmode;
189- struct param_ctx *ctx = data;
190-@@ -3559,7 +3559,7 @@ static int cmd_dev_param_set_cb(const struct nlmsghdr *nlh, void *data)
191- nla_type = mnl_attr_get_u8(nla_param[DEVLINK_ATTR_PARAM_TYPE]);
192- mnl_attr_for_each_nested(param_value_attr,
193- nla_param[DEVLINK_ATTR_PARAM_VALUES_LIST]) {
194-- struct nlattr *nla_value[DEVLINK_ATTR_MAX + 1] = {};
195-+ struct nlattr *nla_value[DEVLINK_ATTR_MAX + 1] = {0};
196- struct nlattr *val_attr;
197-
198- err = mnl_attr_parse_nested(param_value_attr,
199-@@ -3602,7 +3602,7 @@ static int cmd_dev_param_set_cb(const struct nlmsghdr *nlh, void *data)
200-
201- static int cmd_dev_param_set(struct dl *dl)
202- {
203-- struct param_ctx ctx = {};
204-+ struct param_ctx ctx = {0};
205- struct nlmsghdr *nlh;
206- bool conv_exists;
207- uint32_t val_u32 = 0;
208-@@ -3774,7 +3774,7 @@ static int cmd_dev_param(struct dl *dl)
209-
210- static void pr_out_action_stats(struct dl *dl, struct nlattr *action_stats)
211- {
212-- struct nlattr *tb_stats_entry[DEVLINK_ATTR_MAX + 1] = {};
213-+ struct nlattr *tb_stats_entry[DEVLINK_ATTR_MAX + 1] = {0};
214- struct nlattr *nla_reload_stats_entry, *nla_limit, *nla_value;
215- enum devlink_reload_limit limit;
216- uint32_t value;
217-@@ -4015,7 +4015,7 @@ static void pr_out_versions_single(struct dl *dl, const struct nlmsghdr *nlh,
218- struct nlattr *version;
219-
220- mnl_attr_for_each(version, nlh, sizeof(struct genlmsghdr)) {
221-- struct nlattr *tb[DEVLINK_ATTR_MAX + 1] = {};
222-+ struct nlattr *tb[DEVLINK_ATTR_MAX + 1] = {0};
223- const char *ver_value;
224- const char *ver_name;
225- int err;
226-@@ -4105,7 +4105,7 @@ static void pr_out_info(struct dl *dl, const struct nlmsghdr *nlh,
227- static int cmd_versions_show_cb(const struct nlmsghdr *nlh, void *data)
228- {
229- struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
230-- struct nlattr *tb[DEVLINK_ATTR_MAX + 1] = {};
231-+ struct nlattr *tb[DEVLINK_ATTR_MAX + 1] = {0};
232- bool has_versions, has_info;
233- struct dl *dl = data;
234-
235-@@ -4958,7 +4958,7 @@ static void pr_out_port(struct dl *dl, struct nlattr **tb)
236- static int cmd_port_show_cb(const struct nlmsghdr *nlh, void *data)
237- {
238- struct dl *dl = data;
239-- struct nlattr *tb[DEVLINK_ATTR_MAX + 1] = {};
240-+ struct nlattr *tb[DEVLINK_ATTR_MAX + 1] = {0};
241- struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
242-
243- mnl_attr_parse(nlh, sizeof(*genl), attr_cb, tb);
244-@@ -5896,7 +5896,7 @@ static void pr_out_sb(struct dl *dl, struct nlattr **tb)
245- static int cmd_sb_show_cb(const struct nlmsghdr *nlh, void *data)
246- {
247- struct dl *dl = data;
248-- struct nlattr *tb[DEVLINK_ATTR_MAX + 1] = {};
249-+ struct nlattr *tb[DEVLINK_ATTR_MAX + 1] = {0};
250- struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
251-
252- mnl_attr_parse(nlh, sizeof(*genl), attr_cb, tb);
253-@@ -5974,7 +5974,7 @@ static void pr_out_sb_pool(struct dl *dl, struct nlattr **tb)
254- static int cmd_sb_pool_show_cb(const struct nlmsghdr *nlh, void *data)
255- {
256- struct dl *dl = data;
257-- struct nlattr *tb[DEVLINK_ATTR_MAX + 1] = {};
258-+ struct nlattr *tb[DEVLINK_ATTR_MAX + 1] = {0};
259- struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
260-
261- mnl_attr_parse(nlh, sizeof(*genl), attr_cb, tb);
262-@@ -6061,7 +6061,7 @@ static void pr_out_sb_port_pool(struct dl *dl, struct nlattr **tb)
263- static int cmd_sb_port_pool_show_cb(const struct nlmsghdr *nlh, void *data)
264- {
265- struct dl *dl = data;
266-- struct nlattr *tb[DEVLINK_ATTR_MAX + 1] = {};
267-+ struct nlattr *tb[DEVLINK_ATTR_MAX + 1] = {0};
268- struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
269-
270- mnl_attr_parse(nlh, sizeof(*genl), attr_cb, tb);
271-@@ -6165,7 +6165,7 @@ static void pr_out_sb_tc_bind(struct dl *dl, struct nlattr **tb)
272- static int cmd_sb_tc_bind_show_cb(const struct nlmsghdr *nlh, void *data)
273- {
274- struct dl *dl = data;
275-- struct nlattr *tb[DEVLINK_ATTR_MAX + 1] = {};
276-+ struct nlattr *tb[DEVLINK_ATTR_MAX + 1] = {0};
277- struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
278-
279- mnl_attr_parse(nlh, sizeof(*genl), attr_cb, tb);
280-@@ -6456,7 +6456,7 @@ static void cmd_sb_occ_port_pool_process(struct occ_show *occ_show,
281- static int cmd_sb_occ_port_pool_process_cb(const struct nlmsghdr *nlh, void *data)
282- {
283- struct occ_show *occ_show = data;
284-- struct nlattr *tb[DEVLINK_ATTR_MAX + 1] = {};
285-+ struct nlattr *tb[DEVLINK_ATTR_MAX + 1] = {0};
286- struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
287-
288- mnl_attr_parse(nlh, sizeof(*genl), attr_cb, tb);
289-@@ -6507,7 +6507,7 @@ static void cmd_sb_occ_tc_pool_process(struct occ_show *occ_show,
290- static int cmd_sb_occ_tc_pool_process_cb(const struct nlmsghdr *nlh, void *data)
291- {
292- struct occ_show *occ_show = data;
293-- struct nlattr *tb[DEVLINK_ATTR_MAX + 1] = {};
294-+ struct nlattr *tb[DEVLINK_ATTR_MAX + 1] = {0};
295- struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
296-
297- mnl_attr_parse(nlh, sizeof(*genl), attr_cb, tb);
298-@@ -6815,7 +6815,7 @@ static void pr_out_trap_policer(struct dl *dl, struct nlattr **tb, bool array);
299- static int cmd_mon_show_cb(const struct nlmsghdr *nlh, void *data)
300- {
301- struct dl *dl = data;
302-- struct nlattr *tb[DEVLINK_ATTR_MAX + 1] = {};
303-+ struct nlattr *tb[DEVLINK_ATTR_MAX + 1] = {0};
304- struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
305- uint8_t cmd = genl->cmd;
306-
307-@@ -7358,7 +7358,7 @@ static void pr_out_dpipe_headers(struct dpipe_ctx *ctx,
308-
309- static int dpipe_header_field_get(struct nlattr *nl, struct dpipe_field *field)
310- {
311-- struct nlattr *nla_field[DEVLINK_ATTR_MAX + 1] = {};
312-+ struct nlattr *nla_field[DEVLINK_ATTR_MAX + 1] = {0};
313- const char *name;
314- int err;
315-
316-@@ -7409,7 +7409,7 @@ static unsigned int dpipe_header_field_count_get(struct nlattr *nla_fields)
317-
318- static int dpipe_header_get(struct dpipe_ctx *ctx, struct nlattr *nl)
319- {
320-- struct nlattr *nla_header[DEVLINK_ATTR_MAX + 1] = {};
321-+ struct nlattr *nla_header[DEVLINK_ATTR_MAX + 1] = {0};
322- struct dpipe_header *header;
323- unsigned int fields_count;
324- const char *header_name;
325-@@ -7465,7 +7465,7 @@ static int dpipe_headers_get(struct dpipe_ctx *ctx, struct nlattr **tb)
326- static int cmd_dpipe_header_cb(const struct nlmsghdr *nlh, void *data)
327- {
328- struct dpipe_ctx *ctx = data;
329-- struct nlattr *tb[DEVLINK_ATTR_MAX + 1] = {};
330-+ struct nlattr *tb[DEVLINK_ATTR_MAX + 1] = {0};
331- struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
332- int err;
333-
334-@@ -7487,7 +7487,7 @@ static int cmd_dpipe_header_cb(const struct nlmsghdr *nlh, void *data)
335- static int cmd_dpipe_headers_show(struct dl *dl)
336- {
337- struct nlmsghdr *nlh;
338-- struct dpipe_ctx ctx = {};
339-+ struct dpipe_ctx ctx = {0};
340- uint16_t flags = NLM_F_REQUEST | NLM_F_ACK;
341- int err;
342-
343-@@ -7584,7 +7584,7 @@ static void pr_out_dpipe_action(struct dpipe_action *action,
344-
345- static int dpipe_action_parse(struct dpipe_action *action, struct nlattr *nl)
346- {
347-- struct nlattr *nla_action[DEVLINK_ATTR_MAX + 1] = {};
348-+ struct nlattr *nla_action[DEVLINK_ATTR_MAX + 1] = {0};
349- int err;
350-
351- err = mnl_attr_parse_nested(nl, attr_cb, nla_action);
352-@@ -7669,7 +7669,7 @@ static int dpipe_match_parse(struct dpipe_match *match,
353- struct nlattr *nl)
354-
355- {
356-- struct nlattr *nla_match[DEVLINK_ATTR_MAX + 1] = {};
357-+ struct nlattr *nla_match[DEVLINK_ATTR_MAX + 1] = {0};
358- int err;
359-
360- err = mnl_attr_parse_nested(nl, attr_cb, nla_match);
361-@@ -7774,7 +7774,7 @@ resource_path_print(struct dl *dl, struct resources *resources,
362-
363- static int dpipe_table_show(struct dpipe_ctx *ctx, struct nlattr *nl)
364- {
365-- struct nlattr *nla_table[DEVLINK_ATTR_MAX + 1] = {};
366-+ struct nlattr *nla_table[DEVLINK_ATTR_MAX + 1] = {0};
367- struct dpipe_table *table;
368- uint32_t resource_units;
369- bool counters_enabled;
370-@@ -7868,7 +7868,7 @@ err_table_show:
371- static int cmd_dpipe_table_show_cb(const struct nlmsghdr *nlh, void *data)
372- {
373- struct dpipe_ctx *ctx = data;
374-- struct nlattr *tb[DEVLINK_ATTR_MAX + 1] = {};
375-+ struct nlattr *tb[DEVLINK_ATTR_MAX + 1] = {0};
376- struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
377-
378- mnl_attr_parse(nlh, sizeof(*genl), attr_cb, tb);
379-@@ -7886,8 +7886,8 @@ static int cmd_resource_dump_cb(const struct nlmsghdr *nlh, void *data);
380- static int cmd_dpipe_table_show(struct dl *dl)
381- {
382- struct nlmsghdr *nlh;
383-- struct dpipe_ctx dpipe_ctx = {};
384-- struct resource_ctx resource_ctx = {};
385-+ struct dpipe_ctx dpipe_ctx = {0};
386-+ struct resource_ctx resource_ctx = {0};
387- uint16_t flags = NLM_F_REQUEST;
388- int err;
389-
390-@@ -8145,7 +8145,7 @@ static void pr_out_dpipe_entry_value(struct dpipe_ctx *ctx,
391- static int dpipe_entry_match_value_show(struct dpipe_ctx *ctx,
392- struct nlattr *nl)
393- {
394-- struct nlattr *nla_match_value[DEVLINK_ATTR_MAX + 1] = {};
395-+ struct nlattr *nla_match_value[DEVLINK_ATTR_MAX + 1] = {0};
396- struct dpipe_match match;
397- int err;
398-
399-@@ -8176,7 +8176,7 @@ err_match_parse:
400- static int dpipe_entry_action_value_show(struct dpipe_ctx *ctx,
401- struct nlattr *nl)
402- {
403-- struct nlattr *nla_action_value[DEVLINK_ATTR_MAX + 1] = {};
404-+ struct nlattr *nla_action_value[DEVLINK_ATTR_MAX + 1] = {0};
405- struct dpipe_action action;
406- int err;
407-
408-@@ -8232,7 +8232,7 @@ dpipe_tables_match_values_show(struct dpipe_ctx *ctx,
409-
410- static int dpipe_entry_show(struct dpipe_ctx *ctx, struct nlattr *nl)
411- {
412-- struct nlattr *nla_entry[DEVLINK_ATTR_MAX + 1] = {};
413-+ struct nlattr *nla_entry[DEVLINK_ATTR_MAX + 1] = {0};
414- uint32_t entry_index;
415- uint64_t counter;
416- int err;
417-@@ -8296,7 +8296,7 @@ err_entry_show:
418- static int cmd_dpipe_table_entry_dump_cb(const struct nlmsghdr *nlh, void *data)
419- {
420- struct dpipe_ctx *ctx = data;
421-- struct nlattr *tb[DEVLINK_ATTR_MAX + 1] = {};
422-+ struct nlattr *tb[DEVLINK_ATTR_MAX + 1] = {0};
423- struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
424-
425- mnl_attr_parse(nlh, sizeof(*genl), attr_cb, tb);
426-@@ -8312,7 +8312,7 @@ static int cmd_dpipe_table_entry_dump_cb(const struct nlmsghdr *nlh, void *data)
427- static int cmd_dpipe_table_dump(struct dl *dl)
428- {
429- struct nlmsghdr *nlh;
430-- struct dpipe_ctx ctx = {};
431-+ struct dpipe_ctx ctx = {0};
432- uint16_t flags = NLM_F_REQUEST;
433- int err;
434-
435-@@ -8421,7 +8421,7 @@ static int
436- resource_get(struct resource_ctx *ctx, struct resource *resource,
437- struct resource *parent_resource, struct nlattr *nl)
438- {
439-- struct nlattr *nla_resource[DEVLINK_ATTR_MAX + 1] = {};
440-+ struct nlattr *nla_resource[DEVLINK_ATTR_MAX + 1] = {0};
441- struct nlattr *nla_child_resource;
442- struct nlattr *nla_resources;
443- bool top = false;
444-@@ -8569,7 +8569,7 @@ static int resources_get(struct resource_ctx *ctx, struct nlattr **tb)
445- static int cmd_resource_dump_cb(const struct nlmsghdr *nlh, void *data)
446- {
447- struct resource_ctx *ctx = data;
448-- struct nlattr *tb[DEVLINK_ATTR_MAX + 1] = {};
449-+ struct nlattr *tb[DEVLINK_ATTR_MAX + 1] = {0};
450- struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
451- int err;
452-
453-@@ -8593,8 +8593,8 @@ static int cmd_resource_dump_cb(const struct nlmsghdr *nlh, void *data)
454- static int cmd_resource_show(struct dl *dl)
455- {
456- struct nlmsghdr *nlh;
457-- struct dpipe_ctx dpipe_ctx = {};
458-- struct resource_ctx resource_ctx = {};
459-+ struct dpipe_ctx dpipe_ctx = {0};
460-+ struct resource_ctx resource_ctx = {0};
461- int err;
462-
463- err = dl_argv_parse(dl, DL_OPT_HANDLE, 0);
464-@@ -8689,7 +8689,7 @@ err_resource_lookup:
465- static int cmd_resource_set(struct dl *dl)
466- {
467- struct nlmsghdr *nlh;
468-- struct resource_ctx ctx = {};
469-+ struct resource_ctx ctx = {0};
470- int err;
471-
472- err = resource_ctx_init(&ctx, dl);
473-@@ -8801,7 +8801,7 @@ static void pr_out_region_snapshots_id(struct dl *dl, struct nlattr **tb, int in
474-
475- static void pr_out_snapshots(struct dl *dl, struct nlattr **tb)
476- {
477-- struct nlattr *tb_snapshot[DEVLINK_ATTR_MAX + 1] = {};
478-+ struct nlattr *tb_snapshot[DEVLINK_ATTR_MAX + 1] = {0};
479- struct nlattr *nla_sanpshot;
480- int err, index = 0;
481-
482-@@ -8846,7 +8846,7 @@ static void pr_out_region(struct dl *dl, struct nlattr **tb)
483- static int cmd_region_show_cb(const struct nlmsghdr *nlh, void *data)
484- {
485- struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
486-- struct nlattr *tb[DEVLINK_ATTR_MAX + 1] = {};
487-+ struct nlattr *tb[DEVLINK_ATTR_MAX + 1] = {0};
488- struct dl *dl = data;
489-
490- mnl_attr_parse(nlh, sizeof(*genl), attr_cb, tb);
491-@@ -8903,8 +8903,8 @@ static int cmd_region_read_cb(const struct nlmsghdr *nlh, void *data)
492- {
493- struct nlattr *nla_entry, *nla_chunk_data, *nla_chunk_addr;
494- struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
495-- struct nlattr *tb_field[DEVLINK_ATTR_MAX + 1] = {};
496-- struct nlattr *tb[DEVLINK_ATTR_MAX + 1] = {};
497-+ struct nlattr *tb_field[DEVLINK_ATTR_MAX + 1] = {0};
498-+ struct nlattr *tb[DEVLINK_ATTR_MAX + 1] = {0};
499- struct dl *dl = data;
500- int err;
501-
502-@@ -9266,7 +9266,7 @@ static int cmd_fmsg_nest(struct fmsg_cb_data *fmsg_data, uint8_t nest_value,
503- static int cmd_fmsg_object_cb(const struct nlmsghdr *nlh, void *data)
504- {
505- struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
506-- struct nlattr *tb[DEVLINK_ATTR_MAX + 1] = {};
507-+ struct nlattr *tb[DEVLINK_ATTR_MAX + 1] = {0};
508- struct fmsg_cb_data *fmsg_data = data;
509- struct dl *dl = fmsg_data->dl;
510- struct nlattr *nla_object;
511-@@ -9461,7 +9461,7 @@ static void pr_out_dump_report_timestamp(struct dl *dl, const struct nlattr *att
512- static void pr_out_health(struct dl *dl, struct nlattr **tb_health,
513- bool print_device, bool print_port)
514- {
515-- struct nlattr *tb[DEVLINK_ATTR_MAX + 1] = {};
516-+ struct nlattr *tb[DEVLINK_ATTR_MAX + 1] = {0};
517- enum devlink_health_reporter_state state;
518- int err;
519-
520-@@ -9532,7 +9532,7 @@ struct health_ctx {
521- static int cmd_health_show_cb(const struct nlmsghdr *nlh, void *data)
522- {
523- struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
524-- struct nlattr *tb[DEVLINK_ATTR_MAX + 1] = {};
525-+ struct nlattr *tb[DEVLINK_ATTR_MAX + 1] = {0};
526- struct health_ctx *ctx = data;
527- struct dl *dl = ctx->dl;
528-
529-diff --git a/devlink/mnlg.c b/devlink/mnlg.c
530-index d049eb5a..c9782a7b 100644
531---- a/devlink/mnlg.c
532-+++ b/devlink/mnlg.c
533-@@ -58,7 +58,7 @@ static void parse_genl_mc_grps(struct nlattr *nested,
534- const char *name;
535-
536- mnl_attr_for_each_nested(pos, nested) {
537-- struct nlattr *tb[CTRL_ATTR_MCAST_GRP_MAX + 1] = {};
538-+ struct nlattr *tb[CTRL_ATTR_MCAST_GRP_MAX + 1] = {0};
539-
540- mnl_attr_parse_nested(pos, parse_mc_grps_cb, tb);
541- if (!tb[CTRL_ATTR_MCAST_GRP_NAME] ||
542-@@ -92,7 +92,7 @@ static int get_group_id_attr_cb(const struct nlattr *attr, void *data)
543- static int get_group_id_cb(const struct nlmsghdr *nlh, void *data)
544- {
545- struct group_info *group_info = data;
546-- struct nlattr *tb[CTRL_ATTR_MAX + 1] = {};
547-+ struct nlattr *tb[CTRL_ATTR_MAX + 1] = {0};
548- struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
549-
550- mnl_attr_parse(nlh, sizeof(*genl), get_group_id_attr_cb, tb);
551-diff --git a/ip/ip6tunnel.c b/ip/ip6tunnel.c
552-index 5e55e3ea..f74eb9b1 100644
553---- a/ip/ip6tunnel.c
554-+++ b/ip/ip6tunnel.c
555-@@ -273,7 +273,7 @@ static int parse_args(int argc, char **argv, int cmd, struct ip6_tnl_parm2 *p)
556- if (get_ifname(p->name, *argv))
557- invarg("\"name\" not a valid ifname", *argv);
558- if (cmd == SIOCCHGTUNNEL && count == 0) {
559-- struct ip6_tnl_parm2 old_p = {};
560-+ struct ip6_tnl_parm2 old_p = {0};
561-
562- if (tnl_get_ioctl(*argv, &old_p))
563- return -1;
564-diff --git a/ip/ipaddress.c b/ip/ipaddress.c
565-index e536912f..9f062217 100644
566---- a/ip/ipaddress.c
567-+++ b/ip/ipaddress.c
568-@@ -164,7 +164,7 @@ static void print_queuelen(FILE *f, struct rtattr *tb[IFLA_MAX + 1])
569- if (tb[IFLA_TXQLEN])
570- qlen = rta_getattr_u32(tb[IFLA_TXQLEN]);
571- else {
572-- struct ifreq ifr = {};
573-+ struct ifreq ifr = {0};
574- int s = socket(AF_INET, SOCK_STREAM, 0);
575-
576- if (s < 0)
577-@@ -352,7 +352,7 @@ static void print_vfinfo(FILE *fp, struct ifinfomsg *ifi, struct rtattr *vfinfo)
578- struct ifla_vf_mac *vf_mac;
579- struct ifla_vf_broadcast *vf_broadcast;
580- struct ifla_vf_tx_rate *vf_tx_rate;
581-- struct rtattr *vf[IFLA_VF_MAX + 1] = {};
582-+ struct rtattr *vf[IFLA_VF_MAX + 1] = {0};
583-
584- SPRINT_BUF(b1);
585-
586-@@ -2444,7 +2444,7 @@ static int ipaddr_modify(int cmd, int flags, int argc, char **argv)
587- char *lcl_arg = NULL;
588- char *valid_lftp = NULL;
589- char *preferred_lftp = NULL;
590-- inet_prefix lcl = {};
591-+ inet_prefix lcl = {0};
592- inet_prefix peer;
593- int local_len = 0;
594- int peer_len = 0;
595-@@ -2621,7 +2621,7 @@ static int ipaddr_modify(int cmd, int flags, int argc, char **argv)
596- return nodev(d);
597-
598- if (valid_lftp || preferred_lftp) {
599-- struct ifa_cacheinfo cinfo = {};
600-+ struct ifa_cacheinfo cinfo = {0};
601-
602- if (!valid_lft) {
603- fprintf(stderr, "valid_lft is zero\n");
604-diff --git a/ip/ipaddrlabel.c b/ip/ipaddrlabel.c
605-index b045827a..1d398524 100644
606---- a/ip/ipaddrlabel.c
607-+++ b/ip/ipaddrlabel.c
608-@@ -135,7 +135,7 @@ static int ipaddrlabel_modify(int cmd, int argc, char **argv)
609- .ifal.ifal_family = preferred_family,
610- };
611-
612-- inet_prefix prefix = {};
613-+ inet_prefix prefix = {0};
614- uint32_t label = 0xffffffffUL;
615- char *p = NULL;
616- char *l = NULL;
617-diff --git a/ip/iplink_can.c b/ip/iplink_can.c
618-index f2967db5..07309495 100644
619---- a/ip/iplink_can.c
620-+++ b/ip/iplink_can.c
621-@@ -126,7 +126,7 @@ static void print_ctrlmode(enum output_type t, __u32 flags, const char* key)
622- static int can_parse_opt(struct link_util *lu, int argc, char **argv,
623- struct nlmsghdr *n)
624- {
625-- struct can_bittiming bt = {}, dbt = {};
626-+ struct can_bittiming bt = {0}, dbt = {0};
627- struct can_ctrlmode cm = { 0 };
628- struct rtattr *tdc;
629- __u32 tdcv = -1, tdco = -1, tdcf = -1;
630-diff --git a/ip/ipmaddr.c b/ip/ipmaddr.c
631-index 3e7afa91..c059e2c7 100644
632---- a/ip/ipmaddr.c
633-+++ b/ip/ipmaddr.c
634-@@ -302,7 +302,7 @@ static int multiaddr_list(int argc, char **argv)
635-
636- static int multiaddr_modify(int cmd, int argc, char **argv)
637- {
638-- struct ifreq ifr = {};
639-+ struct ifreq ifr = {0};
640- int family;
641- int fd, len;
642-
643-diff --git a/ip/ipntable.c b/ip/ipntable.c
644-index 4ce02a31..11794ce8 100644
645---- a/ip/ipntable.c
646-+++ b/ip/ipntable.c
647-@@ -62,7 +62,7 @@ static int ipntable_modify(int cmd, int flags, int argc, char **argv)
648- char *namep = NULL;
649- char *threshsp = NULL;
650- char *gc_intp = NULL;
651-- char parms_buf[1024] = {};
652-+ char parms_buf[1024] = {0};
653- struct rtattr *parms_rta = (struct rtattr *)parms_buf;
654- int parms_change = 0;
655-
656-@@ -298,7 +298,7 @@ static int ipntable_modify(int cmd, int flags, int argc, char **argv)
657- static const char *ntable_strtime_delta(__u32 msec)
658- {
659- static char str[32];
660-- struct timeval now = {};
661-+ struct timeval now = {0};
662- time_t t;
663- struct tm *tp;
664-
665-diff --git a/ip/iptunnel.c b/ip/iptunnel.c
666-index b6da1459..46c5f894 100644
667---- a/ip/iptunnel.c
668-+++ b/ip/iptunnel.c
669-@@ -176,7 +176,7 @@ static int parse_args(int argc, char **argv, int cmd, struct ip_tunnel_parm *p)
670- union {
671- struct ip_tunnel_parm ip_tnl;
672- struct ip6_tnl_parm2 ip6_tnl;
673-- } old_p = {};
674-+ } old_p = {0};
675-
676- if (tnl_get_ioctl(*argv, &old_p))
677- return -1;
678-@@ -294,7 +294,7 @@ static int do_del(int argc, char **argv)
679- static void print_tunnel(const void *t)
680- {
681- const struct ip_tunnel_parm *p = t;
682-- struct ip_tunnel_6rd ip6rd = {};
683-+ struct ip_tunnel_6rd ip6rd = {0};
684- SPRINT_BUF(b1);
685-
686- /* Do not use format_host() for local addr,
687-@@ -316,7 +316,7 @@ static void print_tunnel(const void *t)
688- : "any");
689-
690- if (p->iph.protocol == IPPROTO_IPV6 && (p->i_flags & SIT_ISATAP)) {
691-- struct ip_tunnel_prl prl[16] = {};
692-+ struct ip_tunnel_prl prl[16] = {0};
693- int i;
694-
695- prl[0].datalen = sizeof(prl) - sizeof(prl[0]);
696-@@ -439,7 +439,7 @@ static int do_show(int argc, char **argv)
697-
698- static int do_prl(int argc, char **argv)
699- {
700-- struct ip_tunnel_prl p = {};
701-+ struct ip_tunnel_prl p = {0};
702- int count = 0;
703- int cmd = 0;
704- const char *medium = NULL;
705-@@ -488,7 +488,7 @@ static int do_prl(int argc, char **argv)
706-
707- static int do_6rd(int argc, char **argv)
708- {
709-- struct ip_tunnel_6rd ip6rd = {};
710-+ struct ip_tunnel_6rd ip6rd = {0};
711- int cmd = 0;
712- const char *medium = NULL;
713- inet_prefix prefix;
714-diff --git a/ip/iptuntap.c b/ip/iptuntap.c
715-index 0b63f53d..3cf55055 100644
716---- a/ip/iptuntap.c
717-+++ b/ip/iptuntap.c
718-@@ -257,7 +257,7 @@ static void print_flags(long flags)
719-
720- static void show_processes(const char *name)
721- {
722-- glob_t globbuf = { };
723-+ glob_t globbuf = {0};
724- char **fd_path;
725- int err;
726-
727-diff --git a/ip/ipxfrm.c b/ip/ipxfrm.c
728-index c3a5986f..7b78712f 100644
729---- a/ip/ipxfrm.c
730-+++ b/ip/ipxfrm.c
731-@@ -908,7 +908,7 @@ void xfrm_xfrma_print(struct rtattr *tb[], __u16 family, FILE *fp,
732-
733- static int xfrm_selector_iszero(struct xfrm_selector *s)
734- {
735-- struct xfrm_selector s0 = {};
736-+ struct xfrm_selector s0 = {0};
737-
738- return (memcmp(&s0, s, sizeof(s0)) == 0);
739- }
740-@@ -930,7 +930,7 @@ void xfrm_state_info_print(struct xfrm_usersa_info *xsinfo,
741- struct rtattr *tb[], FILE *fp, const char *prefix,
742- const char *title, bool nokeys)
743- {
744-- char buf[STRBUF_SIZE] = {};
745-+ char buf[STRBUF_SIZE] = {0};
746- int force_spi = xfrm_xfrmproto_is_ipsec(xsinfo->id.proto);
747-
748- xfrm_id_info_print(&xsinfo->saddr, &xsinfo->id, xsinfo->mode,
749-@@ -1001,7 +1001,7 @@ void xfrm_policy_info_print(struct xfrm_userpolicy_info *xpinfo,
750- struct rtattr *tb[], FILE *fp, const char *prefix,
751- const char *title)
752- {
753-- char buf[STRBUF_SIZE] = {};
754-+ char buf[STRBUF_SIZE] = {0};
755-
756- xfrm_selector_print(&xpinfo->sel, preferred_family, fp, title);
757-
758-@@ -1091,8 +1091,8 @@ int xfrm_id_parse(xfrm_address_t *saddr, struct xfrm_id *id, __u16 *family,
759- {
760- int argc = *argcp;
761- char **argv = *argvp;
762-- inet_prefix dst = {};
763-- inet_prefix src = {};
764-+ inet_prefix dst = {0};
765-+ inet_prefix src = {0};
766-
767- while (1) {
768- if (strcmp(*argv, "src") == 0) {
769-@@ -1399,8 +1399,8 @@ int xfrm_selector_parse(struct xfrm_selector *sel, int *argcp, char ***argvp)
770- {
771- int argc = *argcp;
772- char **argv = *argvp;
773-- inet_prefix dst = {};
774-- inet_prefix src = {};
775-+ inet_prefix dst = {0};
776-+ inet_prefix src = {0};
777- char *upspecp = NULL;
778-
779- while (1) {
780-diff --git a/ip/xfrm_policy.c b/ip/xfrm_policy.c
781-index 8687ced3..161cec66 100644
782---- a/ip/xfrm_policy.c
783-+++ b/ip/xfrm_policy.c
784-@@ -244,15 +244,15 @@ static int xfrm_policy_modify(int cmd, unsigned int flags, int argc, char **argv
785- char *selp = NULL;
786- char *ptypep = NULL;
787- char *sctxp = NULL;
788-- struct xfrm_userpolicy_type upt = {};
789-- struct xfrm_user_offload xuo = {};
790-- char tmpls_buf[XFRM_TMPLS_BUF_SIZE] = {};
791-+ struct xfrm_userpolicy_type upt = {0};
792-+ struct xfrm_user_offload xuo = {0};
793-+ char tmpls_buf[XFRM_TMPLS_BUF_SIZE] = {0};
794- int tmpls_len = 0;
795- struct xfrm_mark mark = {0, 0};
796- struct {
797- struct xfrm_user_sec_ctx sctx;
798- char str[CTX_BUF_SIZE];
799-- } ctx = {};
800-+ } ctx = {0};
801- bool is_if_id_set = false;
802- unsigned int ifindex = 0;
803- bool is_offload = false;
804-@@ -589,12 +589,12 @@ static int xfrm_policy_get_or_delete(int argc, char **argv, int delete,
805- char *indexp = NULL;
806- char *ptypep = NULL;
807- char *sctxp = NULL;
808-- struct xfrm_userpolicy_type upt = {};
809-+ struct xfrm_userpolicy_type upt = {0};
810- struct xfrm_mark mark = {0, 0};
811- struct {
812- struct xfrm_user_sec_ctx sctx;
813- char str[CTX_BUF_SIZE];
814-- } ctx = {};
815-+ } ctx = {0};
816- bool is_if_id_set = false;
817- __u32 if_id = 0;
818-
819-@@ -1276,7 +1276,7 @@ static int xfrm_policy_flush(int argc, char **argv)
820- .n.nlmsg_type = XFRM_MSG_FLUSHPOLICY,
821- };
822- char *ptypep = NULL;
823-- struct xfrm_userpolicy_type upt = {};
824-+ struct xfrm_userpolicy_type upt = {0};
825-
826- while (argc > 0) {
827- if (strcmp(*argv, "ptype") == 0) {
828-diff --git a/ip/xfrm_state.c b/ip/xfrm_state.c
829-index 9be65b2f..6e141335 100644
830---- a/ip/xfrm_state.c
831-+++ b/ip/xfrm_state.c
832-@@ -286,9 +286,9 @@ static int xfrm_state_modify(int cmd, unsigned int flags, int argc, char **argv)
833- .xsinfo.lft.soft_packet_limit = XFRM_INF,
834- .xsinfo.lft.hard_packet_limit = XFRM_INF,
835- };
836-- struct xfrm_replay_state replay = {};
837-- struct xfrm_replay_state_esn replay_esn = {};
838-- struct xfrm_user_offload xuo = {};
839-+ struct xfrm_replay_state replay = {0};
840-+ struct xfrm_replay_state_esn replay_esn = {0};
841-+ struct xfrm_user_offload xuo = {0};
842- unsigned int ifindex = 0;
843- __u8 dir = 0;
844- bool is_offload = false, is_packet_offload = false;
845-@@ -306,7 +306,7 @@ static int xfrm_state_modify(int cmd, unsigned int flags, int argc, char **argv)
846- struct {
847- struct xfrm_user_sec_ctx sctx;
848- char str[CTX_BUF_SIZE];
849-- } ctx = {};
850-+ } ctx = {0};
851- struct xfrm_mark output_mark = {0, 0};
852- bool is_if_id_set = false;
853- __u32 if_id = 0;
854-@@ -376,7 +376,7 @@ static int xfrm_state_modify(int cmd, unsigned int flags, int argc, char **argv)
855- (void *)&encap, sizeof(encap));
856- } else if (strcmp(*argv, "coa") == 0) {
857- inet_prefix coa;
858-- xfrm_address_t xcoa = {};
859-+ xfrm_address_t xcoa = {0};
860-
861- if (coap)
862- duparg("coa", *argv);
863-@@ -481,7 +481,7 @@ static int xfrm_state_modify(int cmd, unsigned int flags, int argc, char **argv)
864- struct xfrm_algo_auth auth;
865- } u;
866- char buf[XFRM_ALGO_KEY_BUF_SIZE];
867-- } alg = {};
868-+ } alg = {0};
869- int len;
870- __u32 icvlen, trunclen;
871- char *name;
872-diff --git a/lib/bpf_legacy.c b/lib/bpf_legacy.c
873-index c8da4a3e..253e8240 100644
874---- a/lib/bpf_legacy.c
875-+++ b/lib/bpf_legacy.c
876-@@ -133,7 +133,7 @@ static inline __u64 bpf_ptr_to_u64(const void *ptr)
877- static int bpf_map_update(int fd, const void *key, const void *value,
878- uint64_t flags)
879- {
880-- union bpf_attr attr = {};
881-+ union bpf_attr attr = {0};
882-
883- attr.map_fd = fd;
884- attr.key = bpf_ptr_to_u64(key);
885-@@ -145,7 +145,7 @@ static int bpf_map_update(int fd, const void *key, const void *value,
886-
887- static int bpf_prog_fd_by_id(uint32_t id)
888- {
889-- union bpf_attr attr = {};
890-+ union bpf_attr attr = {0};
891-
892- attr.prog_id = id;
893-
894-@@ -155,7 +155,7 @@ static int bpf_prog_fd_by_id(uint32_t id)
895- static int bpf_prog_info_by_fd(int fd, struct bpf_prog_info *info,
896- uint32_t *info_len)
897- {
898-- union bpf_attr attr = {};
899-+ union bpf_attr attr = {0};
900- int ret;
901-
902- attr.info.bpf_fd = fd;
903-@@ -172,7 +172,7 @@ static int bpf_prog_info_by_fd(int fd, struct bpf_prog_info *info,
904-
905- int bpf_dump_prog_info(FILE *f, uint32_t id)
906- {
907-- struct bpf_prog_info info = {};
908-+ struct bpf_prog_info info = {0};
909- uint32_t len = sizeof(info);
910- int fd, ret, dump_ok = 0;
911- SPRINT_BUF(tmp);
912-@@ -452,7 +452,7 @@ static int bpf_map_selfcheck_pinned(int fd, const struct bpf_elf_map *map,
913- struct bpf_map_ext *ext, int length,
914- enum bpf_prog_type type)
915- {
916-- struct bpf_elf_map tmp, zero = {};
917-+ struct bpf_elf_map tmp, zero = {0};
918- int ret;
919-
920- ret = bpf_derive_elf_map_from_fdinfo(fd, &tmp, ext);
921-@@ -694,7 +694,7 @@ static int bpf_gen_slave(const char *base, const char *name,
922- {
923- char bpf_lnk_dir[PATH_MAX + NAME_MAX + 1];
924- char bpf_sub_dir[PATH_MAX + NAME_MAX];
925-- struct stat sb = {};
926-+ struct stat sb = {0};
927- int ret;
928-
929- snprintf(bpf_lnk_dir, sizeof(bpf_lnk_dir), "%s%s/", base, link);
930-@@ -801,7 +801,7 @@ out:
931-
932- static int bpf_obj_get(const char *pathname, enum bpf_prog_type type)
933- {
934-- union bpf_attr attr = {};
935-+ union bpf_attr attr = {0};
936- char tmp[PATH_MAX];
937-
938- if (strlen(pathname) > 2 && pathname[0] == 'm' &&
939-@@ -982,7 +982,7 @@ int bpf_load_common(struct bpf_cfg_in *cfg, const struct bpf_cfg_ops *ops,
940-
941- int bpf_parse_common(struct bpf_cfg_in *cfg, const struct bpf_cfg_ops *ops)
942- {
943-- bool opt_tbl[BPF_MODE_MAX] = {};
944-+ bool opt_tbl[BPF_MODE_MAX] = {0};
945-
946- if (ops->cbpf_cb) {
947- opt_tbl[CBPF_BYTECODE] = true;
948-@@ -1025,7 +1025,7 @@ int bpf_graft_map(const char *map_path, uint32_t *key, int argc, char **argv)
949- .argc = argc,
950- .argv = argv,
951- };
952-- struct bpf_map_ext ext = {};
953-+ struct bpf_map_ext ext = {0};
954- int ret, prog_fd, map_fd;
955- uint32_t map_key;
956-
957-@@ -1078,7 +1078,7 @@ out_prog:
958-
959- int bpf_prog_attach_fd(int prog_fd, int target_fd, enum bpf_attach_type type)
960- {
961-- union bpf_attr attr = {};
962-+ union bpf_attr attr = {0};
963-
964- attr.target_fd = target_fd;
965- attr.attach_bpf_fd = prog_fd;
966-@@ -1089,7 +1089,7 @@ int bpf_prog_attach_fd(int prog_fd, int target_fd, enum bpf_attach_type type)
967-
968- int bpf_prog_detach_fd(int target_fd, enum bpf_attach_type type)
969- {
970-- union bpf_attr attr = {};
971-+ union bpf_attr attr = {0};
972-
973- attr.target_fd = target_fd;
974- attr.attach_type = type;
975-@@ -1101,7 +1101,7 @@ int bpf_prog_load_dev(enum bpf_prog_type type, const struct bpf_insn *insns,
976- size_t size_insns, const char *license, __u32 ifindex,
977- char *log, size_t size_log, bool verbose)
978- {
979-- union bpf_attr attr = {};
980-+ union bpf_attr attr = {0};
981-
982- attr.prog_type = type;
983- attr.insns = bpf_ptr_to_u64(insns);
984-@@ -1265,7 +1265,7 @@ static int bpf_map_create(enum bpf_map_type type, uint32_t size_key,
985- uint32_t ifindex, uint32_t btf_id_key,
986- uint32_t btf_id_val)
987- {
988-- union bpf_attr attr = {};
989-+ union bpf_attr attr = {0};
990-
991- attr.map_type = type;
992- attr.key_size = size_key;
993-@@ -1284,7 +1284,7 @@ static int bpf_map_create(enum bpf_map_type type, uint32_t size_key,
994- static int bpf_btf_load(void *btf, size_t size_btf,
995- char *log, size_t size_log)
996- {
997-- union bpf_attr attr = {};
998-+ union bpf_attr attr = {0};
999-
1000- attr.btf = bpf_ptr_to_u64(btf);
1001- attr.btf_size = size_btf;
1002-@@ -1300,7 +1300,7 @@ static int bpf_btf_load(void *btf, size_t size_btf,
1003-
1004- static int bpf_obj_pin(int fd, const char *pathname)
1005- {
1006-- union bpf_attr attr = {};
1007-+ union bpf_attr attr = {0};
1008-
1009- attr.pathname = bpf_ptr_to_u64(pathname);
1010- attr.bpf_fd = fd;
1011-@@ -1985,7 +1985,7 @@ static int bpf_map_verify_all_offs(struct bpf_elf_ctx *ctx, int end)
1012-
1013- static int bpf_fetch_maps_end(struct bpf_elf_ctx *ctx)
1014- {
1015-- struct bpf_elf_map fixup[ARRAY_SIZE(ctx->maps)] = {};
1016-+ struct bpf_elf_map fixup[ARRAY_SIZE(ctx->maps)] = {0};
1017- int i, sym_num = bpf_map_num_sym(ctx);
1018- __u8 *buff;
1019-
1020-@@ -2491,7 +2491,7 @@ static int bpf_fetch_prog_relo(struct bpf_elf_ctx *ctx, const char *section,
1021- int ret, idx, i, fd = -1;
1022-
1023- for (i = 1; i < ctx->elf_hdr.e_shnum; i++) {
1024-- struct bpf_relo_props props = {};
1025-+ struct bpf_relo_props props = {0};
1026-
1027- ret = bpf_fill_section_data(ctx, i, &data_relo);
1028- if (ret < 0 || data_relo.sec_hdr.sh_type != SHT_REL)
1029-@@ -2666,7 +2666,7 @@ static int bpf_fill_prog_arrays(struct bpf_elf_ctx *ctx)
1030- ret = bpf_map_update(ctx->map_fds[idx], &key_id,
1031- &fd, BPF_ANY);
1032- if (ret < 0) {
1033-- struct bpf_jited_aux aux = {};
1034-+ struct bpf_jited_aux aux = {0};
1035-
1036- ret = -errno;
1037- if (errno == E2BIG) {
1038-@@ -2757,7 +2757,7 @@ static bool bpf_pinning_reserved(uint32_t pinning)
1039- static int bpf_hash_init(struct bpf_elf_ctx *ctx, const char *db_file)
1040- {
1041- struct bpf_hash_entry *entry;
1042-- char subpath[PATH_MAX] = {};
1043-+ char subpath[PATH_MAX] = {0};
1044- uint32_t pinning;
1045- FILE *fp;
1046- int ret;
1047-@@ -2857,7 +2857,7 @@ static void bpf_get_cfg(struct bpf_elf_ctx *ctx)
1048-
1049- fd = open(path_jit, O_RDONLY);
1050- if (fd >= 0) {
1051-- char tmp[16] = {};
1052-+ char tmp[16] = {0};
1053-
1054- if (read(fd, tmp, sizeof(tmp)) > 0)
1055- ctx->cfg.jit_enabled = atoi(tmp);
1056-diff --git a/lib/libnetlink.c b/lib/libnetlink.c
1057-index 80adabf4..db613e8d 100644
1058---- a/lib/libnetlink.c
1059-+++ b/lib/libnetlink.c
1060-@@ -79,7 +79,7 @@ static void print_ext_ack_msg(bool is_err, const char *msg)
1061- /* dump netlink extended ack error message */
1062- int nl_dump_ext_ack(const struct nlmsghdr *nlh, nl_ext_ack_fn_t errfn)
1063- {
1064-- struct nlattr *tb[NLMSGERR_ATTR_MAX + 1] = {};
1065-+ struct nlattr *tb[NLMSGERR_ATTR_MAX + 1] = {0};
1066- const struct nlmsgerr *err = mnl_nlmsg_get_payload(nlh);
1067- const struct nlmsghdr *err_nlh = NULL;
1068- unsigned int hlen = sizeof(*err);
1069-@@ -126,7 +126,7 @@ int nl_dump_ext_ack(const struct nlmsghdr *nlh, nl_ext_ack_fn_t errfn)
1070-
1071- int nl_dump_ext_ack_done(const struct nlmsghdr *nlh, unsigned int offset, int error)
1072- {
1073-- struct nlattr *tb[NLMSGERR_ATTR_MAX + 1] = {};
1074-+ struct nlattr *tb[NLMSGERR_ATTR_MAX + 1] = {0};
1075- const char *msg = NULL;
1076-
1077- if (mnl_attr_parse(nlh, offset, err_attr_cb, tb) != MNL_CB_OK)
1078-@@ -959,7 +959,7 @@ int rtnl_dump_filter_nc(struct rtnl_handle *rth,
1079- .filter = filter, .arg1 = arg1,
1080- .nc_flags = nc_flags,
1081- },
1082-- { },
1083-+ {0},
1084- };
1085-
1086- return rtnl_dump_filter_l(rth, a);
1087-@@ -978,7 +978,7 @@ int rtnl_dump_filter_errhndlr_nc(struct rtnl_handle *rth,
1088- .errhndlr = errhndlr, .arg2 = arg2,
1089- .nc_flags = nc_flags,
1090- },
1091-- { },
1092-+ {0},
1093- };
1094-
1095- return rtnl_dump_filter_l(rth, a);
1096-diff --git a/lib/ll_map.c b/lib/ll_map.c
1097-index 8970c20f..7fe5f0bc 100644
1098---- a/lib/ll_map.c
1099-+++ b/lib/ll_map.c
1100-@@ -274,7 +274,7 @@ static int ll_link_get(const char *name, int index)
1101- .ifm.ifi_index = index,
1102- };
1103- __u32 filt_mask = RTEXT_FILTER_VF | RTEXT_FILTER_SKIP_STATS;
1104-- struct rtnl_handle rth = {};
1105-+ struct rtnl_handle rth = {0};
1106- struct nlmsghdr *answer;
1107- int rc = 0;
1108-
1109-diff --git a/lib/rt_names.c b/lib/rt_names.c
1110-index dafef3f1..c3b121fe 100644
1111---- a/lib/rt_names.c
1112-+++ b/lib/rt_names.c
1113-@@ -825,8 +825,7 @@ int nl_proto_a2n(__u32 *id, const char *arg)
1114- }
1115-
1116- #define PROTODOWN_REASON_NUM_BITS 32
1117--static char *protodown_reason_tab[PROTODOWN_REASON_NUM_BITS] = {
1118--};
1119-+static char *protodown_reason_tab[PROTODOWN_REASON_NUM_BITS];
1120-
1121- static int protodown_reason_init;
1122-
1123-diff --git a/misc/arpd.c b/misc/arpd.c
1124-index 1ef837c6..71524bd4 100644
1125---- a/misc/arpd.c
1126-+++ b/misc/arpd.c
1127-@@ -431,7 +431,7 @@ static void get_kern_msg(void)
1128- {
1129- int status;
1130- struct nlmsghdr *h;
1131-- struct sockaddr_nl nladdr = {};
1132-+ struct sockaddr_nl nladdr = {0};
1133- struct iovec iov;
1134- char buf[8192];
1135- struct msghdr msg = {
1136-@@ -655,7 +655,7 @@ int main(int argc, char **argv)
1137-
1138- if (ifnum) {
1139- int i;
1140-- struct ifreq ifr = {};
1141-+ struct ifreq ifr = {0};
1142-
1143- for (i = 0; i < ifnum; i++) {
1144- if (get_ifname(ifr.ifr_name, ifnames[i]))
1145-diff --git a/misc/ss.c b/misc/ss.c
1146-index fb560a55..e5d97d95 100644
1147---- a/misc/ss.c
1148-+++ b/misc/ss.c
1149-@@ -2760,7 +2760,7 @@ static void sctp_timer_print(struct tcpstat *s)
1150- static int tcp_show_line(char *line, const struct filter *f, int family)
1151- {
1152- int rto = 0, ato = 0;
1153-- struct tcpstat s = {};
1154-+ struct tcpstat s = {0};
1155- char *loc, *rem, *data;
1156- char opt[256];
1157- int n;
1158-@@ -3041,7 +3041,7 @@ static void tcp_show_info(const struct nlmsghdr *nlh, struct inet_diag_msg *r,
1159- struct rtattr *tb[])
1160- {
1161- double rtt = 0;
1162-- struct tcpstat s = {};
1163-+ struct tcpstat s = {0};
1164-
1165- s.ss.state = r->idiag_state;
1166-
1167-@@ -3414,7 +3414,7 @@ static int inet_show_sock(struct nlmsghdr *nlh,
1168- inet_stats_print(s, v6only);
1169-
1170- if (show_options) {
1171-- struct tcpstat t = {};
1172-+ struct tcpstat t = {0};
1173-
1174- t.timer = r->idiag_timer;
1175- t.timeout = r->idiag_expires;
1176-@@ -3691,7 +3691,7 @@ static int show_one_inet_sock(struct nlmsghdr *h, void *arg)
1177- int err;
1178- struct inet_diag_arg *diag_arg = arg;
1179- struct inet_diag_msg *r = NLMSG_DATA(h);
1180-- struct sockstat s = {};
1181-+ struct sockstat s = {0};
1182-
1183- if (!(diag_arg->f->families & FAMILY_MASK(r->idiag_family)))
1184- return 0;
1185-@@ -3788,7 +3788,7 @@ static int tcp_show_netlink_file(struct filter *f)
1186- int err2;
1187- size_t status, nitems;
1188- struct nlmsghdr *h = (struct nlmsghdr *)buf;
1189-- struct sockstat s = {};
1190-+ struct sockstat s = {0};
1191-
1192- status = fread(buf, 1, sizeof(*h), fp);
1193- if (status != sizeof(*h)) {
1194-@@ -3945,7 +3945,7 @@ static int sctp_show(struct filter *f)
1195-
1196- static int dgram_show_line(char *line, const struct filter *f, int family)
1197- {
1198-- struct sockstat s = {};
1199-+ struct sockstat s = {0};
1200- char *loc, *rem, *data;
1201- char opt[256];
1202- int n;
1203-@@ -4085,7 +4085,7 @@ static bool unix_type_skip(struct sockstat *s, struct filter *f)
1204-
1205- static void unix_stats_print(struct sockstat *s, struct filter *f)
1206- {
1207-- char port_name[30] = {};
1208-+ char port_name[30] = {0};
1209-
1210- sock_state_print(s);
1211-
1212-@@ -4398,7 +4398,7 @@ static int packet_show_sock(struct nlmsghdr *nlh, void *arg)
1213- struct packet_diag_info *pinfo = NULL;
1214- struct packet_diag_ring *ring_rx = NULL, *ring_tx = NULL;
1215- struct rtattr *tb[PACKET_DIAG_MAX+1];
1216-- struct sockstat stat = {};
1217-+ struct sockstat stat = {0};
1218- uint32_t fanout = 0;
1219- bool has_fanout = false;
1220-
1221-@@ -4547,7 +4547,7 @@ static int packet_show_netlink(struct filter *f)
1222- static int packet_show_line(char *buf, const struct filter *f, int fam)
1223- {
1224- unsigned long long sk;
1225-- struct sockstat stat = {};
1226-+ struct sockstat stat = {0};
1227- int type, prot, iface, state, rq, uid, ino;
1228-
1229- sscanf(buf, "%llx %*d %d %x %d %d %u %u %u",
1230-@@ -4687,7 +4687,7 @@ static int xdp_show_sock(struct nlmsghdr *nlh, void *arg)
1231- struct xdp_diag_umem *umem = NULL;
1232- struct xdp_diag_stats *stats = NULL;
1233- const struct filter *f = arg;
1234-- struct sockstat stat = {};
1235-+ struct sockstat stat = {0};
1236-
1237- parse_rtattr(tb, XDP_DIAG_MAX, (struct rtattr *)(msg + 1),
1238- nlh->nlmsg_len - NLMSG_LENGTH(sizeof(*msg)));
1239-@@ -4772,9 +4772,9 @@ static int netlink_show_one(struct filter *f,
1240- .remote.family = AF_NETLINK,
1241- };
1242-
1243-- SPRINT_BUF(prot_buf) = {};
1244-+ SPRINT_BUF(prot_buf) = {0};
1245- const char *prot_name;
1246-- char procname[64] = {};
1247-+ char procname[64] = {0};
1248-
1249- if (f->f) {
1250- st.rport = -1;
1251-@@ -5021,8 +5021,8 @@ static void tipc_sock_addr_print(struct rtattr *net_addr, struct rtattr *id)
1252- uint32_t node = rta_getattr_u32(net_addr);
1253- uint32_t identity = rta_getattr_u32(id);
1254-
1255-- SPRINT_BUF(addr) = {};
1256-- SPRINT_BUF(port) = {};
1257-+ SPRINT_BUF(addr) = {0};
1258-+ SPRINT_BUF(port) = {0};
1259-
1260- sprintf(addr, "%u", node);
1261- sprintf(port, "%u", identity);
1262-@@ -5032,12 +5032,12 @@ static void tipc_sock_addr_print(struct rtattr *net_addr, struct rtattr *id)
1263-
1264- static int tipc_show_sock(struct nlmsghdr *nlh, void *arg)
1265- {
1266-- struct rtattr *stat[TIPC_NLA_SOCK_STAT_MAX + 1] = {};
1267-- struct rtattr *attrs[TIPC_NLA_SOCK_MAX + 1] = {};
1268-- struct rtattr *con[TIPC_NLA_CON_MAX + 1] = {};
1269-- struct rtattr *info[TIPC_NLA_MAX + 1] = {};
1270-+ struct rtattr *stat[TIPC_NLA_SOCK_STAT_MAX + 1] = {0};
1271-+ struct rtattr *attrs[TIPC_NLA_SOCK_MAX + 1] = {0};
1272-+ struct rtattr *con[TIPC_NLA_CON_MAX + 1] = {0};
1273-+ struct rtattr *info[TIPC_NLA_MAX + 1] = {0};
1274- struct rtattr *msg_ref;
1275-- struct sockstat ss = {};
1276-+ struct sockstat ss = {0};
1277-
1278- parse_rtattr(info, TIPC_NLA_MAX, NLMSG_DATA(nlh),
1279- NLMSG_PAYLOAD(nlh, 0));
1280-diff --git a/rdma/dev.c b/rdma/dev.c
1281-index f495b713..dfc886bb 100644
1282---- a/rdma/dev.c
1283-+++ b/rdma/dev.c
1284-@@ -201,7 +201,7 @@ static void dev_print_dev_proto(struct nlattr **tb)
1285-
1286- static int dev_parse_cb(const struct nlmsghdr *nlh, void *data)
1287- {
1288-- struct nlattr *tb[RDMA_NLDEV_ATTR_MAX] = {};
1289-+ struct nlattr *tb[RDMA_NLDEV_ATTR_MAX] = {0};
1290- struct rd *rd = data;
1291- const char *name;
1292- uint32_t idx;
1293-diff --git a/rdma/link.c b/rdma/link.c
1294-index 85318173..9b3125d6 100644
1295---- a/rdma/link.c
1296-+++ b/rdma/link.c
1297-@@ -220,7 +220,7 @@ static void link_print_netdev(const struct rd * rd, struct nlattr **tb)
1298-
1299- static int link_parse_cb(const struct nlmsghdr *nlh, void *data)
1300- {
1301-- struct nlattr *tb[RDMA_NLDEV_ATTR_MAX] = {};
1302-+ struct nlattr *tb[RDMA_NLDEV_ATTR_MAX] = {0};
1303- struct rd *rd = data;
1304- uint32_t port, idx;
1305- const char *name;
1306-diff --git a/rdma/rdma.c b/rdma/rdma.c
1307-index 131c6b2a..90bf3ed5 100644
1308---- a/rdma/rdma.c
1309-+++ b/rdma/rdma.c
1310-@@ -103,7 +103,7 @@ int main(int argc, char **argv)
1311- bool show_raw = false;
1312- bool force = false;
1313- bool oneline = false;
1314-- struct rd rd = {};
1315-+ struct rd rd = {0};
1316- char *filename;
1317- int opt;
1318- int err;
1319-diff --git a/rdma/res-cmid.c b/rdma/res-cmid.c
1320-index 17a89cc4..7d348d45 100644
1321---- a/rdma/res-cmid.c
1322-+++ b/rdma/res-cmid.c
1323-@@ -202,7 +202,7 @@ out:
1324-
1325- int res_cm_id_idx_parse_cb(const struct nlmsghdr *nlh, void *data)
1326- {
1327-- struct nlattr *tb[RDMA_NLDEV_ATTR_MAX] = {};
1328-+ struct nlattr *tb[RDMA_NLDEV_ATTR_MAX] = {0};
1329- struct rd *rd = data;
1330- const char *name;
1331- int idx;
1332-@@ -219,7 +219,7 @@ int res_cm_id_idx_parse_cb(const struct nlmsghdr *nlh, void *data)
1333-
1334- int res_cm_id_parse_cb(const struct nlmsghdr *nlh, void *data)
1335- {
1336-- struct nlattr *tb[RDMA_NLDEV_ATTR_MAX] = {};
1337-+ struct nlattr *tb[RDMA_NLDEV_ATTR_MAX] = {0};
1338- struct nlattr *nla_table, *nla_entry;
1339- struct rd *rd = data;
1340- int ret = MNL_CB_OK;
1341-@@ -236,7 +236,7 @@ int res_cm_id_parse_cb(const struct nlmsghdr *nlh, void *data)
1342- nla_table = tb[RDMA_NLDEV_ATTR_RES_CM_ID];
1343-
1344- mnl_attr_for_each_nested(nla_entry, nla_table) {
1345-- struct nlattr *nla_line[RDMA_NLDEV_ATTR_MAX] = {};
1346-+ struct nlattr *nla_line[RDMA_NLDEV_ATTR_MAX] = {0};
1347-
1348- ret = mnl_attr_parse_nested(nla_entry, rd_attr_cb, nla_line);
1349- if (ret != MNL_CB_OK)
1350-diff --git a/rdma/res-cq.c b/rdma/res-cq.c
1351-index 0cab3fe0..a8ee00dc 100644
1352---- a/rdma/res-cq.c
1353-+++ b/rdma/res-cq.c
1354-@@ -130,7 +130,7 @@ out:
1355-
1356- int res_cq_idx_parse_cb(const struct nlmsghdr *nlh, void *data)
1357- {
1358-- struct nlattr *tb[RDMA_NLDEV_ATTR_MAX] = {};
1359-+ struct nlattr *tb[RDMA_NLDEV_ATTR_MAX] = {0};
1360- struct rd *rd = data;
1361- const char *name;
1362- uint32_t idx;
1363-@@ -148,7 +148,7 @@ int res_cq_idx_parse_cb(const struct nlmsghdr *nlh, void *data)
1364-
1365- int res_cq_parse_cb(const struct nlmsghdr *nlh, void *data)
1366- {
1367-- struct nlattr *tb[RDMA_NLDEV_ATTR_MAX] = {};
1368-+ struct nlattr *tb[RDMA_NLDEV_ATTR_MAX] = {0};
1369- struct nlattr *nla_table, *nla_entry;
1370- struct rd *rd = data;
1371- int ret = MNL_CB_OK;
1372-@@ -165,7 +165,7 @@ int res_cq_parse_cb(const struct nlmsghdr *nlh, void *data)
1373- nla_table = tb[RDMA_NLDEV_ATTR_RES_CQ];
1374-
1375- mnl_attr_for_each_nested(nla_entry, nla_table) {
1376-- struct nlattr *nla_line[RDMA_NLDEV_ATTR_MAX] = {};
1377-+ struct nlattr *nla_line[RDMA_NLDEV_ATTR_MAX] = {0};
1378-
1379- ret = mnl_attr_parse_nested(nla_entry, rd_attr_cb, nla_line);
1380- if (ret != MNL_CB_OK)
1381-diff --git a/rdma/res-mr.c b/rdma/res-mr.c
1382-index f6c2534a..024f5994 100644
1383---- a/rdma/res-mr.c
1384-+++ b/rdma/res-mr.c
1385-@@ -96,7 +96,7 @@ out:
1386-
1387- int res_mr_idx_parse_cb(const struct nlmsghdr *nlh, void *data)
1388- {
1389-- struct nlattr *tb[RDMA_NLDEV_ATTR_MAX] = {};
1390-+ struct nlattr *tb[RDMA_NLDEV_ATTR_MAX] = {0};
1391- struct rd *rd = data;
1392- const char *name;
1393- uint32_t idx;
1394-@@ -114,7 +114,7 @@ int res_mr_idx_parse_cb(const struct nlmsghdr *nlh, void *data)
1395-
1396- int res_mr_parse_cb(const struct nlmsghdr *nlh, void *data)
1397- {
1398-- struct nlattr *tb[RDMA_NLDEV_ATTR_MAX] = {};
1399-+ struct nlattr *tb[RDMA_NLDEV_ATTR_MAX] = {0};
1400- struct nlattr *nla_table, *nla_entry;
1401- struct rd *rd = data;
1402- int ret = MNL_CB_OK;
1403-@@ -131,7 +131,7 @@ int res_mr_parse_cb(const struct nlmsghdr *nlh, void *data)
1404- nla_table = tb[RDMA_NLDEV_ATTR_RES_MR];
1405-
1406- mnl_attr_for_each_nested(nla_entry, nla_table) {
1407-- struct nlattr *nla_line[RDMA_NLDEV_ATTR_MAX] = {};
1408-+ struct nlattr *nla_line[RDMA_NLDEV_ATTR_MAX] = {0};
1409-
1410- ret = mnl_attr_parse_nested(nla_entry, rd_attr_cb, nla_line);
1411- if (ret != MNL_CB_OK)
1412-diff --git a/rdma/res-pd.c b/rdma/res-pd.c
1413-index 8b9f7aa6..e45b1d0d 100644
1414---- a/rdma/res-pd.c
1415-+++ b/rdma/res-pd.c
1416-@@ -82,7 +82,7 @@ out:
1417-
1418- int res_pd_idx_parse_cb(const struct nlmsghdr *nlh, void *data)
1419- {
1420-- struct nlattr *tb[RDMA_NLDEV_ATTR_MAX] = {};
1421-+ struct nlattr *tb[RDMA_NLDEV_ATTR_MAX] = {0};
1422- struct rd *rd = data;
1423- const char *name;
1424- uint32_t idx;
1425-@@ -99,7 +99,7 @@ int res_pd_idx_parse_cb(const struct nlmsghdr *nlh, void *data)
1426-
1427- int res_pd_parse_cb(const struct nlmsghdr *nlh, void *data)
1428- {
1429-- struct nlattr *tb[RDMA_NLDEV_ATTR_MAX] = {};
1430-+ struct nlattr *tb[RDMA_NLDEV_ATTR_MAX] = {0};
1431- struct nlattr *nla_table, *nla_entry;
1432- struct rd *rd = data;
1433- int ret = MNL_CB_OK;
1434-@@ -116,7 +116,7 @@ int res_pd_parse_cb(const struct nlmsghdr *nlh, void *data)
1435- nla_table = tb[RDMA_NLDEV_ATTR_RES_PD];
1436-
1437- mnl_attr_for_each_nested(nla_entry, nla_table) {
1438-- struct nlattr *nla_line[RDMA_NLDEV_ATTR_MAX] = {};
1439-+ struct nlattr *nla_line[RDMA_NLDEV_ATTR_MAX] = {0};
1440-
1441- ret = mnl_attr_parse_nested(nla_entry, rd_attr_cb, nla_line);
1442- if (ret != MNL_CB_OK)
1443-diff --git a/rdma/res-qp.c b/rdma/res-qp.c
1444-index 65ff54ab..49a3d549 100644
1445---- a/rdma/res-qp.c
1446-+++ b/rdma/res-qp.c
1447-@@ -183,7 +183,7 @@ out:
1448-
1449- int res_qp_idx_parse_cb(const struct nlmsghdr *nlh, void *data)
1450- {
1451-- struct nlattr *tb[RDMA_NLDEV_ATTR_MAX] = {};
1452-+ struct nlattr *tb[RDMA_NLDEV_ATTR_MAX] = {0};
1453- struct rd *rd = data;
1454- const char *name;
1455- uint32_t idx;
1456-@@ -201,7 +201,7 @@ int res_qp_idx_parse_cb(const struct nlmsghdr *nlh, void *data)
1457-
1458- int res_qp_parse_cb(const struct nlmsghdr *nlh, void *data)
1459- {
1460-- struct nlattr *tb[RDMA_NLDEV_ATTR_MAX] = {};
1461-+ struct nlattr *tb[RDMA_NLDEV_ATTR_MAX] = {0};
1462- struct nlattr *nla_table, *nla_entry;
1463- struct rd *rd = data;
1464- int ret = MNL_CB_OK;
1465-@@ -218,7 +218,7 @@ int res_qp_parse_cb(const struct nlmsghdr *nlh, void *data)
1466- nla_table = tb[RDMA_NLDEV_ATTR_RES_QP];
1467-
1468- mnl_attr_for_each_nested(nla_entry, nla_table) {
1469-- struct nlattr *nla_line[RDMA_NLDEV_ATTR_MAX] = {};
1470-+ struct nlattr *nla_line[RDMA_NLDEV_ATTR_MAX] = {0};
1471-
1472- ret = mnl_attr_parse_nested(nla_entry, rd_attr_cb, nla_line);
1473- if (ret != MNL_CB_OK)
1474-diff --git a/rdma/res.c b/rdma/res.c
1475-index 3e024134..fac047f2 100644
1476---- a/rdma/res.c
1477-+++ b/rdma/res.c
1478-@@ -38,7 +38,7 @@ static int res_print_summary(struct nlattr **tb)
1479- int err;
1480-
1481- mnl_attr_for_each_nested(nla_entry, nla_table) {
1482-- struct nlattr *nla_line[RDMA_NLDEV_ATTR_MAX] = {};
1483-+ struct nlattr *nla_line[RDMA_NLDEV_ATTR_MAX] = {0};
1484-
1485- err = mnl_attr_parse_nested(nla_entry, rd_attr_cb, nla_line);
1486- if (err != MNL_CB_OK)
1487-@@ -63,7 +63,7 @@ static int res_no_args_idx_parse_cb(const struct nlmsghdr *nlh, void *data)
1488-
1489- static int res_no_args_parse_cb(const struct nlmsghdr *nlh, void *data)
1490- {
1491-- struct nlattr *tb[RDMA_NLDEV_ATTR_MAX] = {};
1492-+ struct nlattr *tb[RDMA_NLDEV_ATTR_MAX] = {0};
1493- const char *name;
1494- uint32_t idx;
1495-
1496-diff --git a/rdma/utils.c b/rdma/utils.c
1497-index 27595a38..9ac34a0d 100644
1498---- a/rdma/utils.c
1499-+++ b/rdma/utils.c
1500-@@ -512,7 +512,7 @@ int rd_attr_cb(const struct nlattr *attr, void *data)
1501-
1502- int rd_dev_init_cb(const struct nlmsghdr *nlh, void *data)
1503- {
1504-- struct nlattr *tb[RDMA_NLDEV_ATTR_MAX] = {};
1505-+ struct nlattr *tb[RDMA_NLDEV_ATTR_MAX] = {0};
1506- struct dev_map *dev_map;
1507- struct rd *rd = data;
1508- const char *dev_name;
1509-diff --git a/tc/e_bpf.c b/tc/e_bpf.c
1510-index 79cddace..9ab76e26 100644
1511---- a/tc/e_bpf.c
1512-+++ b/tc/e_bpf.c
1513-@@ -54,8 +54,8 @@ static int parse_bpf(struct exec_util *eu, int argc, char **argv)
1514- char **argv_run = argv_default, **envp_run, *tmp;
1515- int ret, i, env_old, env_num, env_map;
1516- const char *bpf_uds_name = NULL;
1517-- int fds[BPF_SCM_MAX_FDS] = {};
1518-- struct bpf_map_aux aux = {};
1519-+ int fds[BPF_SCM_MAX_FDS] = {0};
1520-+ struct bpf_map_aux aux = {0};
1521-
1522- if (argc == 0)
1523- return 0;
1524-diff --git a/tc/em_cmp.c b/tc/em_cmp.c
1525-index dfd123df..75a39990 100644
1526---- a/tc/em_cmp.c
1527-+++ b/tc/em_cmp.c
1528-@@ -39,7 +39,7 @@ static int cmp_parse_eopt(struct nlmsghdr *n, struct tcf_ematch_hdr *hdr,
1529- int align, opnd = 0;
1530- unsigned long offset = 0, layer = TCF_LAYER_NETWORK, mask = 0, value = 0;
1531- int offset_present = 0, value_present = 0;
1532-- struct tcf_em_cmp cmp = {};
1533-+ struct tcf_em_cmp cmp = {0};
1534-
1535- #define PARSE_ERR(CARG, FMT, ARGS...) \
1536- em_parse_error(EINVAL, args, CARG, &cmp_ematch_util, FMT, ##ARGS)
1537-diff --git a/tc/em_ipset.c b/tc/em_ipset.c
1538-index f97abaf3..c80c429e 100644
1539---- a/tc/em_ipset.c
1540-+++ b/tc/em_ipset.c
1541-@@ -195,7 +195,7 @@ static void ipset_print_usage(FILE *fd)
1542- static int ipset_parse_eopt(struct nlmsghdr *n, struct tcf_ematch_hdr *hdr,
1543- struct bstr *args)
1544- {
1545-- struct xt_set_info set_info = {};
1546-+ struct xt_set_info set_info = {0};
1547- int ret;
1548-
1549- #define PARSE_ERR(CARG, FMT, ARGS...) \
1550-diff --git a/tc/em_meta.c b/tc/em_meta.c
1551-index 6a5654f3..b0ba5ba2 100644
1552---- a/tc/em_meta.c
1553-+++ b/tc/em_meta.c
1554-@@ -356,7 +356,7 @@ static int meta_parse_eopt(struct nlmsghdr *n, struct tcf_ematch_hdr *hdr,
1555- {
1556- int opnd;
1557- struct bstr *a;
1558-- struct tcf_meta_hdr meta_hdr = {};
1559-+ struct tcf_meta_hdr meta_hdr = {0};
1560- unsigned long lvalue = 0, rvalue = 0;
1561-
1562- if (args == NULL)
1563-diff --git a/tc/em_nbyte.c b/tc/em_nbyte.c
1564-index 9f421fb4..c6afd298 100644
1565---- a/tc/em_nbyte.c
1566-+++ b/tc/em_nbyte.c
1567-@@ -39,7 +39,7 @@ static int nbyte_parse_eopt(struct nlmsghdr *n, struct tcf_ematch_hdr *hdr,
1568- struct bstr *needle = args;
1569- unsigned long offset = 0, layer = TCF_LAYER_NETWORK;
1570- int offset_present = 0;
1571-- struct tcf_em_nbyte nb = {};
1572-+ struct tcf_em_nbyte nb = {0};
1573-
1574- #define PARSE_ERR(CARG, FMT, ARGS...) \
1575- em_parse_error(EINVAL, args, CARG, &nbyte_ematch_util, FMT, ##ARGS)
1576-diff --git a/tc/em_u32.c b/tc/em_u32.c
1577-index a83382ba..604a0caf 100644
1578---- a/tc/em_u32.c
1579-+++ b/tc/em_u32.c
1580-@@ -34,7 +34,7 @@ static int u32_parse_eopt(struct nlmsghdr *n, struct tcf_ematch_hdr *hdr,
1581- struct bstr *a;
1582- int align, nh_len;
1583- unsigned long key, mask, offmask = 0, offset;
1584-- struct tc_u32_key u_key = {};
1585-+ struct tc_u32_key u_key = {0};
1586-
1587- #define PARSE_ERR(CARG, FMT, ARGS...) \
1588- em_parse_error(EINVAL, args, CARG, &u32_ematch_util, FMT, ##ARGS)
1589-diff --git a/tc/f_bpf.c b/tc/f_bpf.c
1590-index a6d4875f..b71b24e9 100644
1591---- a/tc/f_bpf.c
1592-+++ b/tc/f_bpf.c
1593-@@ -78,7 +78,7 @@ static int bpf_parse_opt(struct filter_util *qu, char *handle,
1594- struct tcmsg *t = NLMSG_DATA(n);
1595- unsigned int bpf_gen_flags = 0;
1596- unsigned int bpf_flags = 0;
1597-- struct bpf_cfg_in cfg = {};
1598-+ struct bpf_cfg_in cfg = {0};
1599- bool seen_run = false;
1600- bool skip_sw = false;
1601- struct rtattr *tail;
1602-diff --git a/tc/f_fw.c b/tc/f_fw.c
1603-index 5e72e526..e2a11847 100644
1604---- a/tc/f_fw.c
1605-+++ b/tc/f_fw.c
1606-@@ -88,7 +88,7 @@ static int fw_parse_opt(struct filter_util *qu, char *handle, int argc, char **a
1607- }
1608- continue;
1609- } else if (strcmp(*argv, "indev") == 0) {
1610-- char d[IFNAMSIZ+1] = {};
1611-+ char d[IFNAMSIZ+1] = {0};
1612-
1613- argc--;
1614- argv++;
1615-diff --git a/tc/f_u32.c b/tc/f_u32.c
1616-index 59aa4e3a..19f035d0 100644
1617---- a/tc/f_u32.c
1618-+++ b/tc/f_u32.c
1619-@@ -1024,7 +1024,7 @@ static int u32_parse_opt(struct filter_util *qu, char *handle,
1620- struct {
1621- struct tc_u32_sel sel;
1622- struct tc_u32_key keys[128];
1623-- } sel = {};
1624-+ } sel = {0};
1625- struct tcmsg *t = NLMSG_DATA(n);
1626- struct rtattr *tail;
1627- int sel_ok = 0, terminal_ok = 0;
1628-@@ -1129,7 +1129,7 @@ static int u32_parse_opt(struct filter_util *qu, char *handle,
1629- struct {
1630- struct tc_u32_sel sel;
1631- struct tc_u32_key keys[4];
1632-- } sel2 = {};
1633-+ } sel2 = {0};
1634-
1635- NEXT_ARG();
1636- if (parse_selector(&argc, &argv, &sel2.sel, n)) {
1637-@@ -1155,7 +1155,7 @@ static int u32_parse_opt(struct filter_util *qu, char *handle,
1638- sample_ok = 1;
1639- continue;
1640- } else if (strcmp(*argv, "indev") == 0) {
1641-- char ind[IFNAMSIZ + 1] = {};
1642-+ char ind[IFNAMSIZ + 1] = {0};
1643-
1644- argc--;
1645- argv++;
1646-diff --git a/tc/m_bpf.c b/tc/m_bpf.c
1647-index da50c05e..81866e55 100644
1648---- a/tc/m_bpf.c
1649-+++ b/tc/m_bpf.c
1650-@@ -73,8 +73,8 @@ static int bpf_parse_opt(struct action_util *a, int *ptr_argc, char ***ptr_argv,
1651- int tca_id, struct nlmsghdr *n)
1652- {
1653- const char *bpf_obj = NULL, *bpf_uds_name = NULL;
1654-- struct tc_act_bpf parm = {};
1655-- struct bpf_cfg_in cfg = {};
1656-+ struct tc_act_bpf parm = {0};
1657-+ struct bpf_cfg_in cfg = {0};
1658- bool seen_run = false;
1659- struct rtattr *tail;
1660- int argc, ret = 0;
1661-diff --git a/tc/m_connmark.c b/tc/m_connmark.c
1662-index 8506d95a..9cc911b8 100644
1663---- a/tc/m_connmark.c
1664-+++ b/tc/m_connmark.c
1665-@@ -35,7 +35,7 @@ static int
1666- parse_connmark(struct action_util *a, int *argc_p, char ***argv_p, int tca_id,
1667- struct nlmsghdr *n)
1668- {
1669-- struct tc_connmark sel = {};
1670-+ struct tc_connmark sel = {0};
1671- char **argv = *argv_p;
1672- int argc = *argc_p;
1673- int ok = 0;
1674-diff --git a/tc/m_csum.c b/tc/m_csum.c
1675-index f5fe8f55..b29353b1 100644
1676---- a/tc/m_csum.c
1677-+++ b/tc/m_csum.c
1678-@@ -84,7 +84,7 @@ static int
1679- parse_csum(struct action_util *a, int *argc_p,
1680- char ***argv_p, int tca_id, struct nlmsghdr *n)
1681- {
1682-- struct tc_csum sel = {};
1683-+ struct tc_csum sel = {0};
1684-
1685- int argc = *argc_p;
1686- char **argv = *argv_p;
1687-diff --git a/tc/m_mirred.c b/tc/m_mirred.c
1688-index e5653e67..6aca86ad 100644
1689---- a/tc/m_mirred.c
1690-+++ b/tc/m_mirred.c
1691-@@ -91,9 +91,9 @@ parse_direction(struct action_util *a, int *argc_p, char ***argv_p,
1692- int argc = *argc_p;
1693- char **argv = *argv_p;
1694- int ok = 0, iok = 0, mirror = 0, redir = 0, ingress = 0, egress = 0;
1695-- struct tc_mirred p = {};
1696-+ struct tc_mirred p = {0};
1697- struct rtattr *tail;
1698-- char d[IFNAMSIZ] = {};
1699-+ char d[IFNAMSIZ] = {0};
1700-
1701- while (argc > 0) {
1702-
1703-diff --git a/tc/m_nat.c b/tc/m_nat.c
1704-index 95b35584..b8869141 100644
1705---- a/tc/m_nat.c
1706-+++ b/tc/m_nat.c
1707-@@ -78,7 +78,7 @@ bad_val:
1708- static int
1709- parse_nat(struct action_util *a, int *argc_p, char ***argv_p, int tca_id, struct nlmsghdr *n)
1710- {
1711-- struct tc_nat sel = {};
1712-+ struct tc_nat sel = {0};
1713-
1714- int argc = *argc_p;
1715- char **argv = *argv_p;
1716-diff --git a/tc/m_pedit.c b/tc/m_pedit.c
1717-index 32f03415..f65fcedf 100644
1718---- a/tc/m_pedit.c
1719-+++ b/tc/m_pedit.c
1720-@@ -519,7 +519,7 @@ done:
1721-
1722- static int parse_munge(int *argc_p, char ***argv_p, struct m_pedit_sel *sel)
1723- {
1724-- struct m_pedit_key tkey = {};
1725-+ struct m_pedit_key tkey = {0};
1726- int argc = *argc_p;
1727- char **argv = *argv_p;
1728- int res = -1;
1729-@@ -623,7 +623,7 @@ static int pedit_keys_ex_addattr(struct m_pedit_sel *sel, struct nlmsghdr *n)
1730- static int parse_pedit(struct action_util *a, int *argc_p, char ***argv_p,
1731- int tca_id, struct nlmsghdr *n)
1732- {
1733-- struct m_pedit_sel sel = {};
1734-+ struct m_pedit_sel sel = {0};
1735-
1736- int argc = *argc_p;
1737- char **argv = *argv_p;
1738-diff --git a/tc/m_simple.c b/tc/m_simple.c
1739-index fe2bca21..765fef96 100644
1740---- a/tc/m_simple.c
1741-+++ b/tc/m_simple.c
1742-@@ -93,7 +93,7 @@ static int
1743- parse_simple(struct action_util *a, int *argc_p, char ***argv_p, int tca_id,
1744- struct nlmsghdr *n)
1745- {
1746-- struct tc_defact sel = {};
1747-+ struct tc_defact sel = {0};
1748- int argc = *argc_p;
1749- char **argv = *argv_p;
1750- int ok = 0;
1751-diff --git a/tc/m_tunnel_key.c b/tc/m_tunnel_key.c
1752-index ff699cc8..c6aabb0c 100644
1753---- a/tc/m_tunnel_key.c
1754-+++ b/tc/m_tunnel_key.c
1755-@@ -314,7 +314,7 @@ static int tunnel_key_parse_tos_ttl(char *str, int type, struct nlmsghdr *n)
1756- static int parse_tunnel_key(struct action_util *a, int *argc_p, char ***argv_p,
1757- int tca_id, struct nlmsghdr *n)
1758- {
1759-- struct tc_tunnel_key parm = {};
1760-+ struct tc_tunnel_key parm = {0};
1761- char **argv = *argv_p;
1762- int argc = *argc_p;
1763- struct rtattr *tail;
1764-diff --git a/tc/m_vlan.c b/tc/m_vlan.c
1765-index c1dc8b42..3293aae6 100644
1766---- a/tc/m_vlan.c
1767-+++ b/tc/m_vlan.c
1768-@@ -73,7 +73,7 @@ static int parse_vlan(struct action_util *a, int *argc_p, char ***argv_p,
1769- int proto_set = 0;
1770- __u8 prio;
1771- int prio_set = 0;
1772-- struct tc_vlan parm = {};
1773-+ struct tc_vlan parm = {0};
1774-
1775- if (matches(*argv, "vlan") != 0)
1776- return -1;
1777-diff --git a/tc/q_cbs.c b/tc/q_cbs.c
1778-index 788535c6..072b393a 100644
1779---- a/tc/q_cbs.c
1780-+++ b/tc/q_cbs.c
1781-@@ -32,7 +32,7 @@ static void explain1(const char *arg, const char *val)
1782- static int cbs_parse_opt(struct qdisc_util *qu, int argc,
1783- char **argv, struct nlmsghdr *n, const char *dev)
1784- {
1785-- struct tc_cbs_qopt opt = {};
1786-+ struct tc_cbs_qopt opt = {0};
1787- struct rtattr *tail;
1788-
1789- while (argc > 0) {
1790-diff --git a/tc/q_choke.c b/tc/q_choke.c
1791-index 7653eb7e..4a69fdff 100644
1792---- a/tc/q_choke.c
1793-+++ b/tc/q_choke.c
1794-@@ -30,7 +30,7 @@ static void explain(void)
1795- static int choke_parse_opt(struct qdisc_util *qu, int argc, char **argv,
1796- struct nlmsghdr *n, const char *dev)
1797- {
1798-- struct tc_red_qopt opt = {};
1799-+ struct tc_red_qopt opt = {0};
1800- unsigned int burst = 0;
1801- unsigned int avpkt = 1000;
1802- double probability = 0.02;
1803-diff --git a/tc/q_codel.c b/tc/q_codel.c
1804-index 03b6f92f..37e31495 100644
1805---- a/tc/q_codel.c
1806-+++ b/tc/q_codel.c
1807-@@ -150,7 +150,7 @@ static int codel_print_opt(struct qdisc_util *qu, FILE *f, struct rtattr *opt)
1808- static int codel_print_xstats(struct qdisc_util *qu, FILE *f,
1809- struct rtattr *xstats)
1810- {
1811-- struct tc_codel_xstats _st = {}, *st;
1812-+ struct tc_codel_xstats _st = {0}, *st;
1813-
1814- SPRINT_BUF(b1);
1815-
1816-diff --git a/tc/q_fifo.c b/tc/q_fifo.c
1817-index 9b2c5348..2db11c7c 100644
1818---- a/tc/q_fifo.c
1819-+++ b/tc/q_fifo.c
1820-@@ -26,7 +26,7 @@ static int fifo_parse_opt(struct qdisc_util *qu, int argc, char **argv,
1821- struct nlmsghdr *n, const char *dev)
1822- {
1823- int ok = 0;
1824-- struct tc_fifo_qopt opt = {};
1825-+ struct tc_fifo_qopt opt = {0};
1826-
1827- while (argc > 0) {
1828- if (strcmp(*argv, "limit") == 0) {
1829-diff --git a/tc/q_fq_codel.c b/tc/q_fq_codel.c
1830-index 9c9d7bc1..ac52c160 100644
1831---- a/tc/q_fq_codel.c
1832-+++ b/tc/q_fq_codel.c
1833-@@ -253,7 +253,7 @@ static int fq_codel_print_opt(struct qdisc_util *qu, FILE *f, struct rtattr *opt
1834- static int fq_codel_print_xstats(struct qdisc_util *qu, FILE *f,
1835- struct rtattr *xstats)
1836- {
1837-- struct tc_fq_codel_xstats _st = {}, *st;
1838-+ struct tc_fq_codel_xstats _st = {0}, *st;
1839-
1840- SPRINT_BUF(b1);
1841-
1842-diff --git a/tc/q_gred.c b/tc/q_gred.c
1843-index f6a3f05e..85387e2b 100644
1844---- a/tc/q_gred.c
1845-+++ b/tc/q_gred.c
1846-@@ -299,8 +299,8 @@ gred_parse_vqs(struct tc_gred_info *info, struct rtattr *vqs)
1847- unsigned int offset = 0;
1848-
1849- while (rem > offset) {
1850-- struct rtattr *tb_entry[TCA_GRED_VQ_ENTRY_MAX + 1] = {};
1851-- struct rtattr *tb[TCA_GRED_VQ_MAX + 1] = {};
1852-+ struct rtattr *tb_entry[TCA_GRED_VQ_ENTRY_MAX + 1] = {0};
1853-+ struct rtattr *tb[TCA_GRED_VQ_MAX + 1] = {0};
1854- struct rtattr *entry;
1855- unsigned int len;
1856- unsigned int dp;
1857-@@ -408,7 +408,7 @@ gred_print_stats(struct tc_gred_info *info, struct tc_gred_qopt *qopt)
1858-
1859- static int gred_print_opt(struct qdisc_util *qu, FILE *f, struct rtattr *opt)
1860- {
1861-- struct tc_gred_info infos[MAX_DPs] = {};
1862-+ struct tc_gred_info infos[MAX_DPs] = {0};
1863- struct rtattr *tb[TCA_GRED_MAX + 1];
1864- struct tc_gred_sopt *sopt;
1865- struct tc_gred_qopt *qopt;
1866-diff --git a/tc/q_hfsc.c b/tc/q_hfsc.c
1867-index 609d925a..b4bb78f2 100644
1868---- a/tc/q_hfsc.c
1869-+++ b/tc/q_hfsc.c
1870-@@ -68,7 +68,7 @@ static int
1871- hfsc_parse_opt(struct qdisc_util *qu, int argc, char **argv,
1872- struct nlmsghdr *n, const char *dev)
1873- {
1874-- struct tc_hfsc_qopt qopt = {};
1875-+ struct tc_hfsc_qopt qopt = {0};
1876-
1877- while (argc > 0) {
1878- if (matches(*argv, "default") == 0) {
1879-@@ -139,7 +139,7 @@ static int
1880- hfsc_parse_class_opt(struct qdisc_util *qu, int argc, char **argv,
1881- struct nlmsghdr *n, const char *dev)
1882- {
1883-- struct tc_service_curve rsc = {}, fsc = {}, usc = {};
1884-+ struct tc_service_curve rsc = {0}, fsc = {}, usc = {};
1885- int rsc_ok = 0, fsc_ok = 0, usc_ok = 0;
1886- struct rtattr *tail;
1887-
1888-diff --git a/tc/q_htb.c b/tc/q_htb.c
1889-index 9afb293d..83401cde 100644
1890---- a/tc/q_htb.c
1891-+++ b/tc/q_htb.c
1892-@@ -110,7 +110,7 @@ static int htb_parse_opt(struct qdisc_util *qu, int argc,
1893- static int htb_parse_class_opt(struct qdisc_util *qu, int argc, char **argv,
1894- struct nlmsghdr *n, const char *dev)
1895- {
1896-- struct tc_htb_opt opt = {};
1897-+ struct tc_htb_opt opt = {0};
1898- __u32 rtab[256], ctab[256];
1899- unsigned buffer = 0, cbuffer = 0;
1900- int cell_log = -1, ccell_log = -1;
1901-diff --git a/tc/q_multiq.c b/tc/q_multiq.c
1902-index b1e6c9a8..12027bc8 100644
1903---- a/tc/q_multiq.c
1904-+++ b/tc/q_multiq.c
1905-@@ -31,7 +31,7 @@ static void explain(void)
1906- static int multiq_parse_opt(struct qdisc_util *qu, int argc, char **argv,
1907- struct nlmsghdr *n, const char *dev)
1908- {
1909-- struct tc_multiq_qopt opt = {};
1910-+ struct tc_multiq_qopt opt = {0};
1911-
1912- if (argc) {
1913- if (strcmp(*argv, "help") == 0) {
1914-diff --git a/tc/q_netem.c b/tc/q_netem.c
1915-index 4ce9ab6e..9fa40cc4 100644
1916---- a/tc/q_netem.c
1917-+++ b/tc/q_netem.c
1918-@@ -197,17 +197,17 @@ static int netem_parse_opt(struct qdisc_util *qu, int argc, char **argv,
1919- int slot_dist_size = 0;
1920- struct rtattr *tail;
1921- struct tc_netem_qopt opt = { .limit = 1000 };
1922-- struct tc_netem_corr cor = {};
1923-- struct tc_netem_reorder reorder = {};
1924-- struct tc_netem_corrupt corrupt = {};
1925-+ struct tc_netem_corr cor = {0};
1926-+ struct tc_netem_reorder reorder = {0};
1927-+ struct tc_netem_corrupt corrupt = {0};
1928- struct tc_netem_gimodel gimodel;
1929- struct tc_netem_gemodel gemodel;
1930-- struct tc_netem_rate rate = {};
1931-- struct tc_netem_slot slot = {};
1932-+ struct tc_netem_rate rate = {0};
1933-+ struct tc_netem_slot slot = {0};
1934- __s16 *dist_data = NULL;
1935- __s16 *slot_dist_data = NULL;
1936- __u16 loss_type = NETEM_LOSS_UNSPEC;
1937-- int present[__TCA_NETEM_MAX] = {};
1938-+ int present[__TCA_NETEM_MAX] = {0};
1939- __u64 rate64 = 0;
1940- __u64 seed = 0;
1941-
1942-diff --git a/tc/q_red.c b/tc/q_red.c
1943-index f760253d..5c523a16 100644
1944---- a/tc/q_red.c
1945-+++ b/tc/q_red.c
1946-@@ -46,7 +46,7 @@ static int red_parse_opt(struct qdisc_util *qu, int argc, char **argv,
1947- struct nla_bitfield32 flags_bf = {
1948- .selector = RED_SUPPORTED_FLAGS,
1949- };
1950-- struct tc_red_qopt opt = {};
1951-+ struct tc_red_qopt opt = {0};
1952- unsigned int burst = 0;
1953- unsigned int avpkt = 0;
1954- double probability = 0.02;
1955-diff --git a/tc/q_sfq.c b/tc/q_sfq.c
1956-index 17bf8f63..62911069 100644
1957---- a/tc/q_sfq.c
1958-+++ b/tc/q_sfq.c
1959-@@ -33,7 +33,7 @@ static void explain(void)
1960- static int sfq_parse_opt(struct qdisc_util *qu, int argc, char **argv, struct nlmsghdr *n, const char *dev)
1961- {
1962- int ok = 0, red = 0;
1963-- struct tc_sfq_qopt_v1 opt = {};
1964-+ struct tc_sfq_qopt_v1 opt = {0};
1965- unsigned int burst = 0;
1966- int wlog;
1967- unsigned int avpkt = 1000;
1968-diff --git a/tc/q_skbprio.c b/tc/q_skbprio.c
1969-index b0ba180a..cdb174ff 100644
1970---- a/tc/q_skbprio.c
1971-+++ b/tc/q_skbprio.c
1972-@@ -27,7 +27,7 @@ static int skbprio_parse_opt(struct qdisc_util *qu, int argc, char **argv,
1973- struct nlmsghdr *n, const char *dev)
1974- {
1975- int ok = 0;
1976-- struct tc_skbprio_qopt opt = {};
1977-+ struct tc_skbprio_qopt opt = {0};
1978-
1979- while (argc > 0) {
1980- if (strcmp(*argv, "limit") == 0) {
1981-diff --git a/tc/q_tbf.c b/tc/q_tbf.c
1982-index f621756d..7b149228 100644
1983---- a/tc/q_tbf.c
1984-+++ b/tc/q_tbf.c
1985-@@ -34,7 +34,7 @@ static void explain1(const char *arg, const char *val)
1986- static int tbf_parse_opt(struct qdisc_util *qu, int argc, char **argv,
1987- struct nlmsghdr *n, const char *dev)
1988- {
1989-- struct tc_tbf_qopt opt = {};
1990-+ struct tc_tbf_qopt opt = {0};
1991- __u32 rtab[256];
1992- __u32 ptab[256];
1993- unsigned buffer = 0, mtu = 0, mpu = 0, latency = 0;
1994-diff --git a/tc/tc_class.c b/tc/tc_class.c
1995-index f6a3d134..31712a8a 100644
1996---- a/tc/tc_class.c
1997-+++ b/tc/tc_class.c
1998-@@ -31,8 +31,8 @@ struct graph_node {
1999- int nodes_count;
2000- };
2001-
2002--static struct hlist_head cls_list = {};
2003--static struct hlist_head root_cls_list = {};
2004-+static struct hlist_head cls_list = {0};
2005-+static struct hlist_head root_cls_list = {0};
2006-
2007- static void usage(void);
2008-
2009-@@ -62,9 +62,9 @@ static int tc_class_modify(int cmd, unsigned int flags, int argc, char **argv)
2010- .t.tcm_family = AF_UNSPEC,
2011- };
2012- struct qdisc_util *q = NULL;
2013-- struct tc_estimator est = {};
2014-- char d[IFNAMSIZ] = {};
2015-- char k[FILTER_NAMESZ] = {};
2016-+ struct tc_estimator est = {0};
2017-+ char d[IFNAMSIZ] = {0};
2018-+ char k[FILTER_NAMESZ] = {0};
2019-
2020- while (argc > 0) {
2021- if (strcmp(*argv, "dev") == 0) {
2022-@@ -211,14 +211,14 @@ static void graph_cls_show(FILE *fp, char *buf, struct hlist_head *root_list,
2023- int level)
2024- {
2025- struct hlist_node *n, *tmp_cls;
2026-- char cls_id_str[256] = {};
2027-+ char cls_id_str[256] = {0};
2028- struct rtattr *tb[TCA_MAX + 1];
2029- struct qdisc_util *q;
2030-- char str[300] = {};
2031-+ char str[300] = {0};
2032-
2033- hlist_for_each_safe(n, tmp_cls, root_list) {
2034- struct hlist_node *c, *tmp_chld;
2035-- struct hlist_head children = {};
2036-+ struct hlist_head children = {0};
2037- struct graph_node *cls = container_of(n, struct graph_node,
2038- hlist);
2039-
2040-@@ -388,7 +388,7 @@ int print_class(struct nlmsghdr *n, void *arg)
2041- static int tc_class_list(int argc, char **argv)
2042- {
2043- struct tcmsg t = { .tcm_family = AF_UNSPEC };
2044-- char d[IFNAMSIZ] = {};
2045-+ char d[IFNAMSIZ] = {0};
2046- char buf[1024] = {0};
2047-
2048- filter_qdisc = 0;
2049-diff --git a/tc/tc_exec.c b/tc/tc_exec.c
2050-index 182fbb4c..0893aa03 100644
2051---- a/tc/tc_exec.c
2052-+++ b/tc/tc_exec.c
2053-@@ -81,7 +81,7 @@ noexist:
2054- int do_exec(int argc, char **argv)
2055- {
2056- struct exec_util *eu;
2057-- char kind[FILTER_NAMESZ] = {};
2058-+ char kind[FILTER_NAMESZ] = {0};
2059-
2060- if (argc < 1) {
2061- fprintf(stderr, "No command given, try \"tc exec help\".\n");
2062-diff --git a/tc/tc_filter.c b/tc/tc_filter.c
2063-index eb45c588..31c9788c 100644
2064---- a/tc/tc_filter.c
2065-+++ b/tc/tc_filter.c
2066-@@ -73,9 +73,9 @@ static int tc_filter_modify(int cmd, unsigned int flags, int argc, char **argv)
2067- __u32 chain_index = 0;
2068- int chain_index_set = 0;
2069- char *fhandle = NULL;
2070-- char d[IFNAMSIZ] = {};
2071-- char k[FILTER_NAMESZ] = {};
2072-- struct tc_estimator est = {};
2073-+ char d[IFNAMSIZ] = {0};
2074-+ char k[FILTER_NAMESZ] = {0};
2075-+ struct tc_estimator est = {0};
2076-
2077- if (cmd == RTM_NEWTFILTER && flags & NLM_F_CREATE)
2078- protocol = htons(ETH_P_ALL);
2079-@@ -401,8 +401,8 @@ static int tc_filter_get(int cmd, unsigned int flags, int argc, char **argv)
2080- __u32 block_index = 0;
2081- __u32 parent_handle = 0;
2082- char *fhandle = NULL;
2083-- char d[IFNAMSIZ] = {};
2084-- char k[FILTER_NAMESZ] = {};
2085-+ char d[IFNAMSIZ] = {0};
2086-+ char k[FILTER_NAMESZ] = {0};
2087-
2088- while (argc > 0) {
2089- if (strcmp(*argv, "dev") == 0) {
2090-@@ -591,7 +591,7 @@ static int tc_filter_list(int cmd, int argc, char **argv)
2091- .t.tcm_parent = TC_H_UNSPEC,
2092- .t.tcm_family = AF_UNSPEC,
2093- };
2094-- char d[IFNAMSIZ] = {};
2095-+ char d[IFNAMSIZ] = {0};
2096- __u32 prio = 0;
2097- __u32 protocol = 0;
2098- __u32 block_index = 0;
2099-diff --git a/tc/tc_qdisc.c b/tc/tc_qdisc.c
2100-index 84fd659f..175b7fab 100644
2101---- a/tc/tc_qdisc.c
2102-+++ b/tc/tc_qdisc.c
2103-@@ -43,13 +43,13 @@ static int usage(void)
2104- static int tc_qdisc_modify(int cmd, unsigned int flags, int argc, char **argv)
2105- {
2106- struct qdisc_util *q = NULL;
2107-- struct tc_estimator est = {};
2108-+ struct tc_estimator est = {0};
2109- struct {
2110- struct tc_sizespec szopts;
2111- __u16 *data;
2112-- } stab = {};
2113-- char d[IFNAMSIZ] = {};
2114-- char k[FILTER_NAMESZ] = {};
2115-+ } stab = {0};
2116-+ char d[IFNAMSIZ] = {0};
2117-+ char k[FILTER_NAMESZ] = {0};
2118- struct {
2119- struct nlmsghdr n;
2120- struct tcmsg t;
2121-@@ -360,7 +360,7 @@ static int tc_qdisc_list(int argc, char **argv)
2122- .t.tcm_family = AF_UNSPEC,
2123- };
2124-
2125-- char d[IFNAMSIZ] = {};
2126-+ char d[IFNAMSIZ] = {0};
2127- bool dump_invisible = false;
2128- __u32 handle;
2129-
2130-diff --git a/tc/tc_stab.c b/tc/tc_stab.c
2131-index a7733726..32f649f5 100644
2132---- a/tc/tc_stab.c
2133-+++ b/tc/tc_stab.c
2134-@@ -46,7 +46,7 @@ int parse_size_table(int *argcp, char ***argvp, struct tc_sizespec *sp)
2135- {
2136- char **argv = *argvp;
2137- int argc = *argcp;
2138-- struct tc_sizespec s = {};
2139-+ struct tc_sizespec s = {0};
2140-
2141- NEXT_ARG();
2142- if (matches(*argv, "help") == 0) {
2143-diff --git a/tc/tc_util.c b/tc/tc_util.c
2144-index aa7cf60f..83026c65 100644
2145---- a/tc/tc_util.c
2146-+++ b/tc/tc_util.c
2147-@@ -132,7 +132,7 @@ ok:
2148-
2149- int print_tc_classid(char *buf, int blen, __u32 h)
2150- {
2151-- SPRINT_BUF(handle) = {};
2152-+ SPRINT_BUF(handle) = {0};
2153- int hlen = SPRINT_BSIZE - 1;
2154-
2155- if (h == TC_H_ROOT)
2156-@@ -147,7 +147,7 @@ int print_tc_classid(char *buf, int blen, __u32 h)
2157- snprintf(handle, hlen, "%x:%x", TC_H_MAJ(h) >> 16, TC_H_MIN(h));
2158-
2159- if (use_names) {
2160-- char clname[IDNAME_MAX] = {};
2161-+ char clname[IDNAME_MAX] = {0};
2162-
2163- if (id_to_name(cls_names, h, clname))
2164- snprintf(buf, blen, "%s#%s", clname, handle);
2165-@@ -798,7 +798,7 @@ void print_tcstats_attr(FILE *fp, struct rtattr *tb[], const char *prefix,
2166- }
2167- /* backward compatibility */
2168- if (tb[TCA_STATS]) {
2169-- struct tc_stats st = {};
2170-+ struct tc_stats st = {0};
2171-
2172- /* handle case where kernel returns more/less than we know about */
2173- memcpy(&st, RTA_DATA(tb[TCA_STATS]),
2174-diff --git a/tipc/bearer.c b/tipc/bearer.c
2175-index bb434f5f..3f703066 100644
2176---- a/tipc/bearer.c
2177-+++ b/tipc/bearer.c
2178-@@ -79,8 +79,8 @@ static void cmd_bearer_enable_udp_help(struct cmdl *cmdl, char *media)
2179- static int get_netid_cb(const struct nlmsghdr *nlh, void *data)
2180- {
2181- struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
2182-- struct nlattr *info[TIPC_NLA_MAX + 1] = {};
2183-- struct nlattr *attrs[TIPC_NLA_NET_MAX + 1] = {};
2184-+ struct nlattr *info[TIPC_NLA_MAX + 1] = {0};
2185-+ struct nlattr *attrs[TIPC_NLA_NET_MAX + 1] = {0};
2186- int *netid = (int*)data;
2187-
2188- mnl_attr_parse(nlh, sizeof(*genl), parse_attrs, info);
2189-@@ -750,7 +750,7 @@ static int bearer_dump_udp_cb(const struct nlmsghdr *nlh, void *data)
2190- {
2191- struct sockaddr_storage *addr;
2192- struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
2193-- struct nlattr *info[TIPC_NLA_UDP_MAX + 1] = {};
2194-+ struct nlattr *info[TIPC_NLA_UDP_MAX + 1] = {0};
2195-
2196- mnl_attr_parse(nlh, sizeof(*genl), parse_attrs, info);
2197-
2198-@@ -786,9 +786,9 @@ static int bearer_get_udp_cb(const struct nlmsghdr *nlh, void *data)
2199- struct cb_data *cb_data = (struct cb_data *) data;
2200- struct sockaddr_storage *addr;
2201- struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
2202-- struct nlattr *info[TIPC_NLA_MAX + 1] = {};
2203-- struct nlattr *attrs[TIPC_NLA_BEARER_MAX + 1] = {};
2204-- struct nlattr *opts[TIPC_NLA_UDP_MAX + 1] = {};
2205-+ struct nlattr *info[TIPC_NLA_MAX + 1] = {0};
2206-+ struct nlattr *attrs[TIPC_NLA_BEARER_MAX + 1] = {0};
2207-+ struct nlattr *opts[TIPC_NLA_UDP_MAX + 1] = {0};
2208-
2209- mnl_attr_parse(nlh, sizeof(*genl), parse_attrs, info);
2210- if (!info[TIPC_NLA_BEARER])
2211-@@ -883,9 +883,9 @@ static int bearer_get_cb(const struct nlmsghdr *nlh, void *data)
2212- {
2213- int *prop = data;
2214- struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
2215-- struct nlattr *info[TIPC_NLA_MAX + 1] = {};
2216-- struct nlattr *attrs[TIPC_NLA_BEARER_MAX + 1] = {};
2217-- struct nlattr *props[TIPC_NLA_PROP_MAX + 1] = {};
2218-+ struct nlattr *info[TIPC_NLA_MAX + 1] = {0};
2219-+ struct nlattr *attrs[TIPC_NLA_BEARER_MAX + 1] = {0};
2220-+ struct nlattr *props[TIPC_NLA_PROP_MAX + 1] = {0};
2221-
2222- mnl_attr_parse(nlh, sizeof(*genl), parse_attrs, info);
2223- if (!info[TIPC_NLA_BEARER])
2224-@@ -1066,8 +1066,8 @@ static int cmd_bearer_get(struct nlmsghdr *nlh, const struct cmd *cmd,
2225- static int bearer_list_cb(const struct nlmsghdr *nlh, void *data)
2226- {
2227- struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
2228-- struct nlattr *info[TIPC_NLA_MAX + 1] = {};
2229-- struct nlattr *attrs[TIPC_NLA_BEARER_MAX + 1] = {};
2230-+ struct nlattr *info[TIPC_NLA_MAX + 1] = {0};
2231-+ struct nlattr *attrs[TIPC_NLA_BEARER_MAX + 1] = {0};
2232-
2233- mnl_attr_parse(nlh, sizeof(*genl), parse_attrs, info);
2234- if (!info[TIPC_NLA_BEARER]) {
2235-diff --git a/tipc/link.c b/tipc/link.c
2236-index f91c3000..15805757 100644
2237---- a/tipc/link.c
2238-+++ b/tipc/link.c
2239-@@ -32,8 +32,8 @@ static const char tipc_bclink_name[] = "broadcast-link";
2240- static int link_list_cb(const struct nlmsghdr *nlh, void *data)
2241- {
2242- struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
2243-- struct nlattr *info[TIPC_NLA_MAX + 1] = {};
2244-- struct nlattr *attrs[TIPC_NLA_LINK_MAX + 1] = {};
2245-+ struct nlattr *info[TIPC_NLA_MAX + 1] = {0};
2246-+ struct nlattr *attrs[TIPC_NLA_LINK_MAX + 1] = {0};
2247-
2248- mnl_attr_parse(nlh, sizeof(*genl), parse_attrs, info);
2249- if (!info[TIPC_NLA_LINK])
2250-@@ -82,9 +82,9 @@ static int link_get_cb(const struct nlmsghdr *nlh, void *data)
2251- {
2252- int *prop = data;
2253- struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
2254-- struct nlattr *info[TIPC_NLA_MAX + 1] = {};
2255-- struct nlattr *attrs[TIPC_NLA_LINK_MAX + 1] = {};
2256-- struct nlattr *props[TIPC_NLA_PROP_MAX + 1] = {};
2257-+ struct nlattr *info[TIPC_NLA_MAX + 1] = {0};
2258-+ struct nlattr *attrs[TIPC_NLA_LINK_MAX + 1] = {0};
2259-+ struct nlattr *props[TIPC_NLA_PROP_MAX + 1] = {0};
2260-
2261- mnl_attr_parse(nlh, sizeof(*genl), parse_attrs, info);
2262- if (!info[TIPC_NLA_LINK])
2263-@@ -501,10 +501,10 @@ static int link_stat_show_cb(const struct nlmsghdr *nlh, void *data)
2264- const char *name;
2265- const char *link = data;
2266- struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
2267-- struct nlattr *info[TIPC_NLA_MAX + 1] = {};
2268-- struct nlattr *attrs[TIPC_NLA_LINK_MAX + 1] = {};
2269-- struct nlattr *prop[TIPC_NLA_PROP_MAX + 1] = {};
2270-- struct nlattr *stats[TIPC_NLA_STATS_MAX + 1] = {};
2271-+ struct nlattr *info[TIPC_NLA_MAX + 1] = {0};
2272-+ struct nlattr *attrs[TIPC_NLA_LINK_MAX + 1] = {0};
2273-+ struct nlattr *prop[TIPC_NLA_PROP_MAX + 1] = {0};
2274-+ struct nlattr *stats[TIPC_NLA_STATS_MAX + 1] = {0};
2275-
2276- mnl_attr_parse(nlh, sizeof(*genl), parse_attrs, info);
2277- if (!info[TIPC_NLA_LINK])
2278-@@ -803,8 +803,8 @@ static int cmd_link_mon_set_prop(struct nlmsghdr *nlh, const struct cmd *cmd,
2279- static int link_mon_summary_cb(const struct nlmsghdr *nlh, void *data)
2280- {
2281- struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
2282-- struct nlattr *info[TIPC_NLA_MAX + 1] = {};
2283-- struct nlattr *attrs[TIPC_NLA_MON_MAX + 1] = {};
2284-+ struct nlattr *info[TIPC_NLA_MAX + 1] = {0};
2285-+ struct nlattr *attrs[TIPC_NLA_MON_MAX + 1] = {0};
2286-
2287- mnl_attr_parse(nlh, sizeof(*genl), parse_attrs, info);
2288- if (!info[TIPC_NLA_MON])
2289-@@ -935,8 +935,8 @@ static void link_mon_print_peer_state(const uint32_t addr, const char *status,
2290- static int link_mon_peer_list_cb(const struct nlmsghdr *nlh, void *data)
2291- {
2292- struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
2293-- struct nlattr *attrs[TIPC_NLA_MON_PEER_MAX + 1] = {};
2294-- struct nlattr *info[TIPC_NLA_MAX + 1] = {};
2295-+ struct nlattr *attrs[TIPC_NLA_MON_PEER_MAX + 1] = {0};
2296-+ struct nlattr *info[TIPC_NLA_MAX + 1] = {0};
2297- uint16_t member_cnt;
2298- uint32_t applied;
2299- uint32_t dom_gen;
2300-@@ -1021,8 +1021,8 @@ static int link_mon_peer_list(uint32_t mon_ref)
2301- static int link_mon_list_cb(const struct nlmsghdr *nlh, void *data)
2302- {
2303- struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
2304-- struct nlattr *info[TIPC_NLA_MAX + 1] = {};
2305-- struct nlattr *attrs[TIPC_NLA_MON_MAX + 1] = {};
2306-+ struct nlattr *info[TIPC_NLA_MAX + 1] = {0};
2307-+ struct nlattr *attrs[TIPC_NLA_MON_MAX + 1] = {0};
2308- char *req_bearer = data;
2309- const char *bname;
2310- const char title[] =
2311-@@ -1149,8 +1149,8 @@ static void cmd_link_mon_get_help(struct cmdl *cmdl)
2312- static int link_mon_get_cb(const struct nlmsghdr *nlh, void *data)
2313- {
2314- struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
2315-- struct nlattr *info[TIPC_NLA_MAX + 1] = {};
2316-- struct nlattr *attrs[TIPC_NLA_MON_MAX + 1] = {};
2317-+ struct nlattr *info[TIPC_NLA_MAX + 1] = {0};
2318-+ struct nlattr *attrs[TIPC_NLA_MON_MAX + 1] = {0};
2319-
2320- mnl_attr_parse(nlh, sizeof(*genl), parse_attrs, info);
2321- if (!info[TIPC_NLA_MON])
2322-diff --git a/tipc/media.c b/tipc/media.c
2323-index 5ff0c8c4..b5c03bae 100644
2324---- a/tipc/media.c
2325-+++ b/tipc/media.c
2326-@@ -20,8 +20,8 @@
2327- static int media_list_cb(const struct nlmsghdr *nlh, void *data)
2328- {
2329- struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
2330-- struct nlattr *info[TIPC_NLA_MAX + 1] = {};
2331-- struct nlattr *attrs[TIPC_NLA_MEDIA_MAX + 1] = {};
2332-+ struct nlattr *info[TIPC_NLA_MAX + 1] = {0};
2333-+ struct nlattr *attrs[TIPC_NLA_MEDIA_MAX + 1] = {0};
2334-
2335- mnl_attr_parse(nlh, sizeof(*genl), parse_attrs, info);
2336- if (!info[TIPC_NLA_MEDIA])
2337-@@ -57,9 +57,9 @@ static int media_get_cb(const struct nlmsghdr *nlh, void *data)
2338- {
2339- int *prop = data;
2340- struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
2341-- struct nlattr *info[TIPC_NLA_MAX + 1] = {};
2342-- struct nlattr *attrs[TIPC_NLA_MEDIA_MAX + 1] = {};
2343-- struct nlattr *props[TIPC_NLA_PROP_MAX + 1] = {};
2344-+ struct nlattr *info[TIPC_NLA_MAX + 1] = {0};
2345-+ struct nlattr *attrs[TIPC_NLA_MEDIA_MAX + 1] = {0};
2346-+ struct nlattr *props[TIPC_NLA_PROP_MAX + 1] = {0};
2347-
2348- mnl_attr_parse(nlh, sizeof(*genl), parse_attrs, info);
2349- if (!info[TIPC_NLA_MEDIA])
2350-diff --git a/tipc/misc.c b/tipc/misc.c
2351-index 32d4a5e0..a4870762 100644
2352---- a/tipc/misc.c
2353-+++ b/tipc/misc.c
2354-@@ -152,7 +152,7 @@ void nodeid2str(uint8_t *id, char *str)
2355-
2356- void hash2nodestr(uint32_t hash, char *str)
2357- {
2358-- struct tipc_sioc_nodeid_req nr = {};
2359-+ struct tipc_sioc_nodeid_req nr = {0};
2360- int sd;
2361-
2362- sd = socket(AF_TIPC, SOCK_RDM, 0);
2363-diff --git a/tipc/nametable.c b/tipc/nametable.c
2364-index 5162f7fc..fedae24e 100644
2365---- a/tipc/nametable.c
2366-+++ b/tipc/nametable.c
2367-@@ -24,9 +24,9 @@ static int nametable_show_cb(const struct nlmsghdr *nlh, void *data)
2368- {
2369- int *iteration = data;
2370- struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
2371-- struct nlattr *info[TIPC_NLA_MAX + 1] = {};
2372-- struct nlattr *attrs[TIPC_NLA_NAME_TABLE_MAX + 1] = {};
2373-- struct nlattr *publ[TIPC_NLA_PUBL_MAX + 1] = {};
2374-+ struct nlattr *info[TIPC_NLA_MAX + 1] = {0};
2375-+ struct nlattr *attrs[TIPC_NLA_NAME_TABLE_MAX + 1] = {0};
2376-+ struct nlattr *publ[TIPC_NLA_PUBL_MAX + 1] = {0};
2377- const char *scope[] = { "", "zone", "cluster", "node" };
2378- char str[33] = {0,};
2379-
2380-diff --git a/tipc/node.c b/tipc/node.c
2381-index e645d374..6d86043f 100644
2382---- a/tipc/node.c
2383-+++ b/tipc/node.c
2384-@@ -21,9 +21,9 @@
2385-
2386- static int node_list_cb(const struct nlmsghdr *nlh, void *data)
2387- {
2388-- struct nlattr *info[TIPC_NLA_MAX + 1] = {};
2389-- struct nlattr *attrs[TIPC_NLA_NODE_MAX + 1] = {};
2390-- char str[33] = {};
2391-+ struct nlattr *info[TIPC_NLA_MAX + 1] = {0};
2392-+ struct nlattr *attrs[TIPC_NLA_NODE_MAX + 1] = {0};
2393-+ char str[33] = {0};
2394- uint32_t addr;
2395-
2396- mnl_attr_parse(nlh, sizeof(struct genlmsghdr), parse_attrs, info);
2397-@@ -300,8 +300,8 @@ static int cmd_node_flush_key(struct nlmsghdr *nlh, const struct cmd *cmd,
2398-
2399- static int nodeid_get_cb(const struct nlmsghdr *nlh, void *data)
2400- {
2401-- struct nlattr *info[TIPC_NLA_MAX + 1] = {};
2402-- struct nlattr *attrs[TIPC_NLA_NET_MAX + 1] = {};
2403-+ struct nlattr *info[TIPC_NLA_MAX + 1] = {0};
2404-+ struct nlattr *attrs[TIPC_NLA_NET_MAX + 1] = {0};
2405- char str[33] = {0,};
2406- uint8_t id[16] = {0,};
2407- uint64_t *w0 = (uint64_t *) &id[0];
2408-@@ -344,8 +344,8 @@ static int cmd_node_get_nodeid(struct nlmsghdr *nlh, const struct cmd *cmd,
2409-
2410- static int netid_get_cb(const struct nlmsghdr *nlh, void *data)
2411- {
2412-- struct nlattr *info[TIPC_NLA_MAX + 1] = {};
2413-- struct nlattr *attrs[TIPC_NLA_NET_MAX + 1] = {};
2414-+ struct nlattr *info[TIPC_NLA_MAX + 1] = {0};
2415-+ struct nlattr *attrs[TIPC_NLA_NET_MAX + 1] = {0};
2416-
2417- mnl_attr_parse(nlh, sizeof(struct genlmsghdr), parse_attrs, info);
2418- if (!info[TIPC_NLA_NET])
2419-diff --git a/tipc/socket.c b/tipc/socket.c
2420-index 4d376e07..178ecd8e 100644
2421---- a/tipc/socket.c
2422-+++ b/tipc/socket.c
2423-@@ -23,8 +23,8 @@
2424- static int publ_list_cb(const struct nlmsghdr *nlh, void *data)
2425- {
2426- struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
2427-- struct nlattr *info[TIPC_NLA_MAX + 1] = {};
2428-- struct nlattr *attrs[TIPC_NLA_SOCK_MAX + 1] = {};
2429-+ struct nlattr *info[TIPC_NLA_MAX + 1] = {0};
2430-+ struct nlattr *attrs[TIPC_NLA_SOCK_MAX + 1] = {0};
2431-
2432- mnl_attr_parse(nlh, sizeof(*genl), parse_attrs, info);
2433- if (!info[TIPC_NLA_PUBL])
2434-@@ -72,8 +72,8 @@ static int publ_list(uint32_t sock)
2435- static int sock_list_cb(const struct nlmsghdr *nlh, void *data)
2436- {
2437- struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
2438-- struct nlattr *info[TIPC_NLA_MAX + 1] = {};
2439-- struct nlattr *attrs[TIPC_NLA_SOCK_MAX + 1] = {};
2440-+ struct nlattr *info[TIPC_NLA_MAX + 1] = {0};
2441-+ struct nlattr *attrs[TIPC_NLA_SOCK_MAX + 1] = {0};
2442-
2443- mnl_attr_parse(nlh, sizeof(*genl), parse_attrs, info);
2444- if (!info[TIPC_NLA_SOCK])
2445-@@ -87,7 +87,7 @@ static int sock_list_cb(const struct nlmsghdr *nlh, void *data)
2446-
2447- if (attrs[TIPC_NLA_SOCK_CON]) {
2448- uint32_t node;
2449-- struct nlattr *con[TIPC_NLA_CON_MAX + 1] = {};
2450-+ struct nlattr *con[TIPC_NLA_CON_MAX + 1] = {0};
2451-
2452- mnl_attr_parse_nested(attrs[TIPC_NLA_SOCK_CON], parse_attrs, con);
2453- node = mnl_attr_get_u32(con[TIPC_NLA_CON_NODE]);
2454---
2455-2.44.0
2456-
R pkg/iproute2/patch/0007-Remove-semicolon-after-function-definitions.patch =>
pkg/iproute2/patch/0006-Remove-semicolon-after-function-definitions.patch
+0,
-0
R pkg/iproute2/patch/0008-Don-t-omit-second-operand-to-operator.patch =>
pkg/iproute2/patch/0007-Don-t-omit-second-operand-to-operator.patch
+0,
-0
R pkg/iproute2/patch/0009-Avoid-unnecessary-VLAs.patch =>
pkg/iproute2/patch/0008-Avoid-unnecessary-VLAs.patch
+0,
-0
R pkg/iproute2/patch/0010-ip-Fix-get_link_kind-when-linked-statically.patch =>
pkg/iproute2/patch/0009-ip-Fix-get_link_kind-when-linked-statically.patch
+0,
-0
R pkg/iproute2/patch/0011-Use-alloca-instead-of-VLA-when-VLA-is-not-available.patch =>
pkg/iproute2/patch/0010-Use-alloca-instead-of-VLA-when-VLA-is-not-available.patch
+0,
-0
R pkg/iproute2/patch/0012-Use-static-inline-function-for-min.patch =>
pkg/iproute2/patch/0011-Use-static-inline-function-for-min.patch
+0,
-0
R pkg/iproute2/patch/0014-Prevent-redefinition-of-SIOCGSTAMP-and-SIOCGSTAMPNS.patch =>
pkg/iproute2/patch/0012-Prevent-redefinition-of-SIOCGSTAMP-and-SIOCGSTAMPNS.patch
+0,
-0
R pkg/iproute2/patch/0016-Fix-overflow-check-for-strtod-and-strtoul.patch =>
pkg/iproute2/patch/0013-Fix-overflow-check-for-strtod-and-strtoul.patch
+0,
-0
1@@ -1,86 +0,0 @@
2-From 0d20d0e247e074dd3e8892053387295062c3c666 Mon Sep 17 00:00:00 2001
3-From: Michael Forney <mforney@mforney.org>
4-Date: Wed, 29 Jan 2020 15:36:37 -0800
5-Subject: [PATCH] Use __typeof__ instead of typeof
6-
7----
8- include/list.h | 18 +++++++++---------
9- lib/ll_map.c | 2 +-
10- 2 files changed, 10 insertions(+), 10 deletions(-)
11-
12-diff --git a/include/list.h b/include/list.h
13-index 7108cea7..36d73d96 100644
14---- a/include/list.h
15-+++ b/include/list.h
16-@@ -7,7 +7,7 @@
17-
18- #ifdef __GNUC__
19- #define container_of(ptr, type, member) ({ \
20-- const typeof( ((type *)0)->member ) *__mptr = (ptr); \
21-+ const __typeof__( ((type *)0)->member ) *__mptr = (ptr);\
22- (type *)( (char *)__mptr - offsetof(type,member) );})
23- #else
24- #define container_of(ptr, type, member) ( \
25-@@ -65,24 +65,24 @@ static inline void list_del(struct list_head *entry)
26- list_entry((ptr)->prev, type, member)
27-
28- #define list_next_entry(pos, member) \
29-- list_entry((pos)->member.next, typeof(*(pos)), member)
30-+ list_entry((pos)->member.next, __typeof__(*(pos)), member)
31-
32- #define list_prev_entry(pos, member) \
33-- list_entry((pos)->member.prev, typeof(*(pos)), member)
34-+ list_entry((pos)->member.prev, __typeof__(*(pos)), member)
35-
36- #define list_for_each_entry(pos, head, member) \
37-- for (pos = list_first_entry(head, typeof(*pos), member); \
38-+ for (pos = list_first_entry(head, __typeof__(*pos), member); \
39- &pos->member != (head); \
40- pos = list_next_entry(pos, member))
41-
42- #define list_for_each_entry_safe(pos, n, head, member) \
43-- for (pos = list_first_entry(head, typeof(*pos), member), \
44-+ for (pos = list_first_entry(head, __typeof__(*pos), member), \
45- n = list_next_entry(pos, member); \
46- &pos->member != (head); \
47- pos = n, n = list_next_entry(n, member))
48-
49- #define list_for_each_entry_reverse(pos, head, member) \
50-- for (pos = list_last_entry(head, typeof(*pos), member); \
51-+ for (pos = list_last_entry(head, __typeof(*pos)__, member); \
52- &pos->member != (head); \
53- pos = list_prev_entry(pos, member))
54-
55-@@ -127,13 +127,13 @@ static inline int list_empty(const struct list_head *head)
56- pos = n)
57-
58- #define hlist_entry_safe(ptr, type, member) \
59-- ({ typeof(ptr) ____ptr = (ptr); \
60-+ ({ __typeof__(ptr) ____ptr = (ptr); \
61- ____ptr ? hlist_entry(____ptr, type, member) : NULL; \
62- })
63-
64- #define hlist_for_each_entry(pos, head, member) \
65-- for (pos = hlist_entry_safe((head)->first, typeof(*(pos)), member);\
66-+ for (pos = hlist_entry_safe((head)->first, __typeof__(*(pos)), member);\
67- pos; \
68-- pos = hlist_entry_safe((pos)->member.next, typeof(*(pos)), member))
69-+ pos = hlist_entry_safe((pos)->member.next, __typeof__(*(pos)), member))
70-
71- #endif /* __LIST_H__ */
72-diff --git a/lib/ll_map.c b/lib/ll_map.c
73-index 7fe5f0bc..0f7305ab 100644
74---- a/lib/ll_map.c
75-+++ b/lib/ll_map.c
76-@@ -168,7 +168,7 @@ static void ll_altname_entries_update(struct ll_cache *parent_im,
77- * and if it does not fit 1:1, recreate the cached list
78- * from scratch.
79- */
80-- im = list_first_entry(&parent_im->altnames_list, typeof(*im),
81-+ im = list_first_entry(&parent_im->altnames_list, __typeof__(*im),
82- altnames_list);
83- rem = RTA_PAYLOAD(proplist);
84- for (i = RTA_DATA(proplist); RTA_OK(i, rem);
85---
86-2.44.0
87-
R pkg/iproute2/patch/0017-Remove-flexible-array-member-in-embedded-struct.patch =>
pkg/iproute2/patch/0014-Remove-flexible-array-member-in-embedded-struct.patch
+0,
-0
1@@ -1,32 +0,0 @@
2-From e53788b231f05d0383fa8433e972384028340bb4 Mon Sep 17 00:00:00 2001
3-From: Michael Forney <mforney@mforney.org>
4-Date: Tue, 2 Jun 2020 03:56:03 -0700
5-Subject: [PATCH] Revert change of BPF_F_* to enum constants
6-
7----
8- include/uapi/linux/bpf.h | 8 +++-----
9- 1 file changed, 3 insertions(+), 5 deletions(-)
10-
11-diff --git a/include/uapi/linux/bpf.h b/include/uapi/linux/bpf.h
12-index 0a2380a1..4a0d5760 100644
13---- a/include/uapi/linux/bpf.h
14-+++ b/include/uapi/linux/bpf.h
15-@@ -5970,12 +5970,10 @@ enum {
16- /* BPF_FUNC_perf_event_output, BPF_FUNC_perf_event_read and
17- * BPF_FUNC_perf_event_read_value flags.
18- */
19--enum {
20-- BPF_F_INDEX_MASK = 0xffffffffULL,
21-- BPF_F_CURRENT_CPU = BPF_F_INDEX_MASK,
22-+#define BPF_F_INDEX_MASK 0xffffffffULL
23-+#define BPF_F_CURRENT_CPU BPF_F_INDEX_MASK
24- /* BPF_FUNC_perf_event_output for sk_buff input context. */
25-- BPF_F_CTXLEN_MASK = (0xfffffULL << 32),
26--};
27-+#define BPF_F_CTXLEN_MASK (0xfffffULL << 32)
28-
29- /* Current network namespace */
30- enum {
31---
32-2.44.0
33-
+1,
-1
1@@ -1 +1 @@
2-6.8.0 r0
3+6.8.0 r1
R pkg/linux-headers/patch/0003-Prevent-zero-length-array-members-in-asound.h.patch =>
pkg/linux-headers/patch/0002-Prevent-zero-length-array-members-in-asound.h.patch
+0,
-0
1@@ -1,32 +0,0 @@
2-From 72b27c48f468c547dcd93beae9041417c05ef655 Mon Sep 17 00:00:00 2001
3-From: Michael Forney <mforney@mforney.org>
4-Date: Tue, 2 Jun 2020 03:56:03 -0700
5-Subject: [PATCH] Revert change of BPF_F_* to enum constants
6-
7----
8- include/uapi/linux/bpf.h | 8 +++-----
9- 1 file changed, 3 insertions(+), 5 deletions(-)
10-
11-diff --git a/include/uapi/linux/bpf.h b/include/uapi/linux/bpf.h
12-index 754e68ca8744..11bef290a69e 100644
13---- a/include/uapi/linux/bpf.h
14-+++ b/include/uapi/linux/bpf.h
15-@@ -5970,12 +5970,10 @@ enum {
16- /* BPF_FUNC_perf_event_output, BPF_FUNC_perf_event_read and
17- * BPF_FUNC_perf_event_read_value flags.
18- */
19--enum {
20-- BPF_F_INDEX_MASK = 0xffffffffULL,
21-- BPF_F_CURRENT_CPU = BPF_F_INDEX_MASK,
22-+#define BPF_F_INDEX_MASK 0xffffffffULL
23-+#define BPF_F_CURRENT_CPU BPF_F_INDEX_MASK
24- /* BPF_FUNC_perf_event_output for sk_buff input context. */
25-- BPF_F_CTXLEN_MASK = (0xfffffULL << 32),
26--};
27-+#define BPF_F_CTXLEN_MASK (0xfffffULL << 32)
28-
29- /* Current network namespace */
30- enum {
31---
32-2.44.0
33-
R pkg/linux-headers/patch/0004-nfc-uapi-remove-stray-semicolon-in-struct-declaratio.patch =>
pkg/linux-headers/patch/0003-nfc-uapi-remove-stray-semicolon-in-struct-declaratio.patch
+0,
-0
+1,
-1
1@@ -1 +1 @@
2-6.8 r0
3+6.8 r1
R pkg/strace/patch/0003-Make-tcp_sysent-a-static-inline-function.patch =>
pkg/strace/patch/0002-Make-tcp_sysent-a-static-inline-function.patch
+0,
-0
1@@ -1,349 +0,0 @@
2-From 268084161926ad4d1d110a3a5432e7ffd4e92fdf Mon Sep 17 00:00:00 2001
3-From: Michael Forney <mforney@mforney.org>
4-Date: Sat, 6 Jul 2019 01:33:01 -0700
5-Subject: [PATCH] Use __typeof__ spelling of typeof
6-
7----
8- src/bpf.c | 10 +++++-----
9- src/btrfs.c | 12 ++++++------
10- src/defs.h | 6 +++---
11- src/fs_0x94_ioctl.c | 2 +-
12- src/fs_f_ioctl.c | 2 +-
13- src/landlock.c | 4 ++--
14- src/list.h | 10 +++++-----
15- src/macros.h | 2 +-
16- src/print_fields.h | 2 +-
17- src/s390.c | 6 +++---
18- src/tee.c | 2 +-
19- src/ubi.c | 2 +-
20- tests/btrfs.c | 2 +-
21- tests/fcntl-common.c | 2 +-
22- 14 files changed, 32 insertions(+), 32 deletions(-)
23-
24-diff --git a/src/bpf.c b/src/bpf.c
25-index bbcdceddd..690df570d 100644
26---- a/src/bpf.c
27-+++ b/src/bpf.c
28-@@ -1440,7 +1440,7 @@ BEGIN_BPF_CMD_DECODER(BPF_LINK_CREATE)
29- tprint_struct_next();
30- PRINT_FIELD_U(attr, target_btf_id);
31- }
32-- attr_size = offsetofend(typeof(attr), target_btf_id);
33-+ attr_size = offsetofend(__typeof__(attr), target_btf_id);
34- break;
35-
36- /* TODO: prog type == BPF_PROG_TYPE_TRACING */
37-@@ -1456,7 +1456,7 @@ BEGIN_BPF_CMD_DECODER(BPF_LINK_CREATE)
38- print_iter_info_array_member, 0);
39- tprint_struct_next();
40- PRINT_FIELD_U(attr, iter_info_len);
41-- attr_size = offsetofend(typeof(attr), iter_info_len);
42-+ attr_size = offsetofend(__typeof__(attr), iter_info_len);
43- break;
44- }
45-
46-@@ -1468,7 +1468,7 @@ BEGIN_BPF_CMD_DECODER(BPF_LINK_CREATE)
47- tprint_struct_begin();
48- PRINT_FIELD_X(attr.perf_event, bpf_cookie);
49- tprint_struct_end();
50-- attr_size = offsetofend(typeof(attr), perf_event.bpf_cookie);
51-+ attr_size = offsetofend(__typeof__(attr), perf_event.bpf_cookie);
52- break;
53-
54- /* TODO: prog type == BPF_PROG_TYPE_KPROBE */
55-@@ -1508,7 +1508,7 @@ BEGIN_BPF_CMD_DECODER(BPF_LINK_CREATE)
56- &buf.cookie, sizeof(buf.cookie),
57- tfetch_mem, print_xint_array_member, 0);
58- tprint_struct_end();
59-- attr_size = offsetofend(typeof(attr), kprobe_multi.cookies);
60-+ attr_size = offsetofend(__typeof__(attr), kprobe_multi.cookies);
61- break;
62- }
63-
64-@@ -1518,7 +1518,7 @@ BEGIN_BPF_CMD_DECODER(BPF_LINK_CREATE)
65- * can pick up non-zero values in the union at the end
66- * of the link_create struct.
67- */
68-- attr_size = offsetofend(typeof(attr), flags);
69-+ attr_size = offsetofend(__typeof__(attr), flags);
70- }
71-
72- print_bpf_link_create_end:
73-diff --git a/src/btrfs.c b/src/btrfs.c
74-index 31ee871b3..76d7a2bec 100644
75---- a/src/btrfs.c
76-+++ b/src/btrfs.c
77-@@ -216,7 +216,7 @@ btrfs_print_logical_ino_container(struct tcb *tcp,
78- tprint_more_data_follows();
79- } else {
80- const uint64_t val_addr =
81-- inodes_addr + offsetof(typeof(container), val);
82-+ inodes_addr + offsetof(__typeof__(container), val);
83- uint64_t record[3];
84- tprint_struct_next();
85- tprints_field_name("val");
86-@@ -257,7 +257,7 @@ btrfs_print_ino_path_container(struct tcb *tcp,
87- tprint_more_data_follows();
88- } else {
89- uint64_t val_addr =
90-- fspath_addr + offsetof(typeof(container), val);
91-+ fspath_addr + offsetof(__typeof__(container), val);
92- uint64_t offset;
93- tprint_struct_next();
94- tprints_field_name("val");
95-@@ -298,7 +298,7 @@ btrfs_print_qgroup_inherit(struct tcb *const tcp, const kernel_ulong_t qgi_addr)
96- uint64_t record;
97- tprint_struct_next();
98- tprints_field_name("qgroups");
99-- print_array(tcp, qgi_addr + offsetof(typeof(inherit), qgroups),
100-+ print_array(tcp, qgi_addr + offsetof(__typeof__(inherit), qgroups),
101- inherit.num_qgroups, &record, sizeof(record),
102- tfetch_mem, print_uint_array_member, 0);
103- }
104-@@ -1170,7 +1170,7 @@ MPERS_PRINTER_DECL(int, btrfs_ioctl,
105- PRINT_FIELD_OBJ_PTR(args, key,
106- print_btrfs_ioctl_search_key,
107- entering(tcp), !abbrev(tcp));
108-- decode_search_arg_buf(tcp, arg + offsetof(typeof(args), buf),
109-+ decode_search_arg_buf(tcp, arg + offsetof(__typeof__(args), buf),
110- sizeof(args.buf), args.key.nr_items);
111- tprint_struct_end();
112- if (entering(tcp))
113-@@ -1206,7 +1206,7 @@ MPERS_PRINTER_DECL(int, btrfs_ioctl,
114- entering(tcp), !abbrev(tcp));
115- tprint_struct_next();
116- PRINT_FIELD_U(args, buf_size);
117-- decode_search_arg_buf(tcp, arg + offsetof(typeof(args), buf),
118-+ decode_search_arg_buf(tcp, arg + offsetof(__typeof__(args), buf),
119- args.buf_size, args.key.nr_items);
120- tprint_struct_end();
121- if (entering(tcp))
122-@@ -1284,7 +1284,7 @@ MPERS_PRINTER_DECL(int, btrfs_ioctl,
123- struct btrfs_ioctl_space_info info;
124- tprint_struct_next();
125- tprints_field_name("spaces");
126-- print_array(tcp, arg + offsetof(typeof(args), spaces),
127-+ print_array(tcp, arg + offsetof(__typeof__(args), spaces),
128- args.total_spaces,
129- &info, sizeof(info), tfetch_mem,
130- print_btrfs_ioctl_space_info, 0);
131-diff --git a/src/defs.h b/src/defs.h
132-index 465d58139..ae1d1d1dc 100644
133---- a/src/defs.h
134-+++ b/src/defs.h
135-@@ -1162,7 +1162,7 @@ print_local_array_ex(struct tcb *tcp,
136- # define print_local_array_upto(tcp_, start_addr_, upto_, print_func_) \
137- print_local_array_ex((tcp_), (start_addr_), \
138- CLAMP((upto_), 0, \
139-- (typeof(upto_)) ARRAY_SIZE(start_addr_)), \
140-+ (__typeof__(upto_)) ARRAY_SIZE(start_addr_)), \
141- sizeof((start_addr_)[0]), (print_func_), \
142- NULL, 0, NULL, NULL)
143-
144-@@ -2045,8 +2045,8 @@ scno_pers_is_valid(kernel_ulong_t scno, unsigned int pers)
145-
146- # define ILOG2_ITER_(val_, ret_, bit_) \
147- do { \
148-- typeof(ret_) shift_ = \
149-- ((val_) > ((((typeof(val_)) 1) \
150-+ __typeof__(ret_) shift_ = \
151-+ ((val_) > ((((__typeof__(val_)) 1) \
152- << (1 << (bit_))) - 1)) << (bit_); \
153- (val_) >>= shift_; \
154- (ret_) |= shift_; \
155-diff --git a/src/fs_0x94_ioctl.c b/src/fs_0x94_ioctl.c
156-index 7aa170af0..b908ea1fb 100644
157---- a/src/fs_0x94_ioctl.c
158-+++ b/src/fs_0x94_ioctl.c
159-@@ -94,7 +94,7 @@ decode_file_dedupe_range(struct tcb *const tcp, const kernel_ulong_t arg)
160- if (abbrev(tcp) && range.dest_count > count)
161- limit = &count;
162-
163-- rc = print_array(tcp, arg + offsetof(typeof(range), info),
164-+ rc = print_array(tcp, arg + offsetof(__typeof__(range), info),
165- range.dest_count, &info, sizeof(info),
166- tfetch_mem,
167- print_file_dedupe_range_info, limit);
168-diff --git a/src/fs_f_ioctl.c b/src/fs_f_ioctl.c
169-index 7b51bc9f9..ee9a42754 100644
170---- a/src/fs_f_ioctl.c
171-+++ b/src/fs_f_ioctl.c
172-@@ -72,7 +72,7 @@ decode_fiemap(struct tcb *const tcp, const kernel_ulong_t arg)
173- struct fiemap_extent fe;
174- tprint_struct_next();
175- tprints_field_name("fm_extents");
176-- print_array(tcp, arg + offsetof(typeof(args), fm_extents),
177-+ print_array(tcp, arg + offsetof(__typeof__(args), fm_extents),
178- args.fm_mapped_extents, &fe, sizeof(fe),
179- tfetch_mem, print_fiemap_extent, 0);
180- }
181-diff --git a/src/landlock.c b/src/landlock.c
182-index 7ee44f84c..16a430de8 100644
183---- a/src/landlock.c
184-+++ b/src/landlock.c
185-@@ -21,9 +21,9 @@ print_landlock_ruleset_attr(struct tcb *tcp, const kernel_ulong_t addr,
186- {
187- struct landlock_ruleset_attr attr = { 0 };
188- const size_t min_attr_size =
189-- offsetofend(typeof(attr), handled_access_fs);
190-+ offsetofend(__typeof__(attr), handled_access_fs);
191- const size_t max_attr_size =
192-- offsetofend(typeof(attr), handled_access_net);
193-+ offsetofend(__typeof__(attr), handled_access_net);
194-
195- if (size < min_attr_size) {
196- printaddr(addr);
197-diff --git a/src/list.h b/src/list.h
198-index 4de4cb3be..f4ec11f0e 100644
199---- a/src/list.h
200-+++ b/src/list.h
201-@@ -158,7 +158,7 @@ list_is_empty(const struct list_item *l)
202- * @param field Name of the field that holds the respective struct list_item.
203- */
204- # define list_next(var, field) \
205-- list_elem((var)->field.next, typeof(*(var)), field)
206-+ list_elem((var)->field.next, __typeof__(*(var)), field)
207- /**
208- * Get the previous element in a list.
209- *
210-@@ -166,7 +166,7 @@ list_is_empty(const struct list_item *l)
211- * @param field Name of the field that holds the respective struct list_item.
212- */
213- # define list_prev(var, field) \
214-- list_elem((var)->field.prev, typeof(*(var)), field)
215-+ list_elem((var)->field.prev, __typeof__(*(var)), field)
216-
217- /**
218- * Insert an item into a list. The item is placed as the next list item
219-@@ -280,7 +280,7 @@ list_replace(struct list_item *old, struct list_item *new)
220- * inside list items.
221- */
222- # define list_foreach(var_, head_, field_) \
223-- for (var_ = list_elem((head_)->next, typeof(*var_), field_); \
224-+ for (var_ = list_elem((head_)->next, __typeof__(*var_), field_); \
225- &(var_->field_) != (head_); var_ = list_next(var_, field_))
226-
227- /**
228-@@ -293,8 +293,8 @@ list_replace(struct list_item *old, struct list_item *new)
229- * @param _tmp Temporary variable for storing pointer to the next item.
230- */
231- # define list_foreach_safe(var_, head_, field_, _tmp) \
232-- for (var_ = list_elem((head_)->next, typeof(*var_), field_), \
233-- _tmp = list_elem((var_)->field_.next, typeof(*var_), field_); \
234-+ for (var_ = list_elem((head_)->next, __typeof__(*var_), field_), \
235-+ _tmp = list_elem((var_)->field_.next, __typeof__(*var_), field_); \
236- &var_->field_ != head_; var_ = _tmp, _tmp = list_next(_tmp, field_))
237-
238- #endif /* !STRACE_LIST_H */
239-diff --git a/src/macros.h b/src/macros.h
240-index cb290c612..81cde400a 100644
241---- a/src/macros.h
242-+++ b/src/macros.h
243-@@ -62,7 +62,7 @@
244-
245- # define sizeof_field(type_, member_) (sizeof(((type_ *)0)->member_))
246-
247--# define typeof_field(type_, member_) typeof(((type_ *)0)->member_)
248-+# define typeof_field(type_, member_) __typeof__(((type_ *)0)->member_)
249-
250- # ifndef offsetofend
251- # define offsetofend(type_, member_) \
252-diff --git a/src/print_fields.h b/src/print_fields.h
253-index 09548ce21..6a7e76982 100644
254---- a/src/print_fields.h
255-+++ b/src/print_fields.h
256-@@ -792,7 +792,7 @@ tprint_sysret_end(void)
257- # define MAYBE_PRINT_FIELD_LEN(print_prefix_, where_, field_, \
258- len_, print_func_, ...) \
259- do { \
260-- unsigned int start = offsetof(typeof(where_), field_); \
261-+ unsigned int start = offsetof(__typeof__(where_), field_); \
262- unsigned int end = start + sizeof((where_).field_); \
263- if (len_ > start) { \
264- print_prefix_; \
265-diff --git a/src/s390.c b/src/s390.c
266-index ca71730c4..455144fe7 100644
267---- a/src/s390.c
268-+++ b/src/s390.c
269-@@ -505,7 +505,7 @@ static void
270- print_sthyi_machine(struct tcb *tcp, struct sthyi_machine *hdr, uint16_t size,
271- bool *dummy)
272- {
273-- size_t last_decoded = offsetofend(typeof(*hdr), infmpman);
274-+ size_t last_decoded = offsetofend(__typeof__(*hdr), infmpman);
275- int cnt_val, name_val, id_val;
276-
277- CHECK_SIZE_EX(hdr, last_decoded, size, "machine structure");
278-@@ -611,7 +611,7 @@ static void
279- print_sthyi_partition(struct tcb *tcp, struct sthyi_partition *hdr,
280- uint16_t size, bool *mt)
281- {
282-- size_t last_decoded = offsetofend(typeof(*hdr), infpabif);
283-+ size_t last_decoded = offsetofend(__typeof__(*hdr), infpabif);
284- int cnt_val, wcap_val, acap_val, id_val, lpar_val;
285-
286- *mt = false;
287-@@ -802,7 +802,7 @@ static void
288- print_sthyi_hypervisor(struct tcb *tcp, struct sthyi_hypervisor *hdr,
289- uint16_t size, int num, bool mt)
290- {
291-- size_t last_decoded = offsetofend(typeof(*hdr), infydifl);
292-+ size_t last_decoded = offsetofend(__typeof__(*hdr), infydifl);
293-
294- CHECK_SIZE_EX(hdr, last_decoded, size, "hypervisor %d structure", num);
295-
296-diff --git a/src/tee.c b/src/tee.c
297-index 25f6e76c5..c62566800 100644
298---- a/src/tee.c
299-+++ b/src/tee.c
300-@@ -33,7 +33,7 @@ struct tee_ioctl_shm_register_fd_data {
301-
302- #define TEE_FETCH_BUF_DATA(buf_, arg_, params_) \
303- tee_fetch_buf_data(tcp, arg, &buf_, sizeof(arg_), \
304-- &arg_, offsetof(typeof(arg_), num_params), \
305-+ &arg_, offsetof(__typeof__(arg_), num_params), \
306- params_)
307-
308- /* session id is printed as 0x%x in libteec */
309-diff --git a/src/ubi.c b/src/ubi.c
310-index 11a435b10..e75377783 100644
311---- a/src/ubi.c
312-+++ b/src/ubi.c
313-@@ -76,7 +76,7 @@ static bool
314- print_ubi_rnvol_req_ent_array_member(struct tcb *tcp, void *elem_buf,
315- size_t elem_size, void *data)
316- {
317-- typeof(&((struct ubi_rnvol_req *) NULL)->ents[0]) p = elem_buf;
318-+ __typeof__(&((struct ubi_rnvol_req *) NULL)->ents[0]) p = elem_buf;
319-
320- tprint_struct_begin();
321- PRINT_FIELD_D(*p, vol_id);
322-diff --git a/tests/btrfs.c b/tests/btrfs.c
323-index ab5bfae68..a3161875b 100644
324---- a/tests/btrfs.c
325-+++ b/tests/btrfs.c
326-@@ -876,7 +876,7 @@ btrfs_print_tree_search_buf(struct btrfs_ioctl_search_key *key,
327- printf("buf=[");
328- for (uint64_t i = 0; i < key->nr_items; ++i) {
329- struct btrfs_ioctl_search_header *sh;
330-- sh = (typeof(sh))(buf + off);
331-+ sh = (__typeof__(sh))(buf + off);
332- if (i)
333- printf(", ");
334- printf("{transid=%" PRI__u64 ", objectid=",
335-diff --git a/tests/fcntl-common.c b/tests/fcntl-common.c
336-index 20f92dd1d..aa6ecc8f5 100644
337---- a/tests/fcntl-common.c
338-+++ b/tests/fcntl-common.c
339-@@ -28,7 +28,7 @@
340- #endif
341-
342- #ifdef HAVE_TYPEOF
343--# define TYPEOF_FLOCK_OFF_T typeof(((struct flock *) NULL)->l_len)
344-+# define TYPEOF_FLOCK_OFF_T __typeof__(((struct flock *) NULL)->l_len)
345- #else
346- # define TYPEOF_FLOCK_OFF_T off_t
347- #endif
348---
349-2.44.0
350-
R pkg/strace/patch/0005-Avoid-pointer-arithmetic-on-void.patch =>
pkg/strace/patch/0003-Avoid-pointer-arithmetic-on-void.patch
+0,
-0
1@@ -1,215 +0,0 @@
2-From 70c04478b105ab15e3e3a4bfcfcf96ace104b32e Mon Sep 17 00:00:00 2001
3-From: Michael Forney <mforney@mforney.org>
4-Date: Sat, 6 Jul 2019 01:54:05 -0700
5-Subject: [PATCH] Avoid empty initializer lists
6-
7----
8- src/bpf.c | 4 ++--
9- src/sched.c | 2 +-
10- src/signal.c | 2 +-
11- src/strace.c | 2 +-
12- tests/btrfs.c | 8 ++++----
13- tests/clock_nanosleep.c | 2 +-
14- tests/nanosleep.c | 2 +-
15- tests/restart_syscall.c | 2 +-
16- tests/setrlimit.c | 2 +-
17- tests/timer_create.c | 2 +-
18- tests/wait4.c | 2 +-
19- tests/waitid.c | 2 +-
20- 12 files changed, 16 insertions(+), 16 deletions(-)
21-
22-diff --git a/src/bpf.c b/src/bpf.c
23-index 690df570d..16f2b7d31 100644
24---- a/src/bpf.c
25-+++ b/src/bpf.c
26-@@ -50,7 +50,7 @@ bpf_cmd_decoder(struct tcb *const tcp, \
27- #define BEGIN_BPF_CMD_DECODER(bpf_cmd) \
28- static DECL_BPF_CMD_DECODER(decode_ ## bpf_cmd) \
29- { \
30-- struct bpf_cmd ## _struct attr = {}; \
31-+ struct bpf_cmd ## _struct attr = {0}; \
32- size_t attr_size = bpf_cmd ## _struct_size; \
33- const unsigned int len = MIN(size, attr_size); \
34- memcpy(&attr, data, len); \
35-@@ -161,7 +161,7 @@ print_ebpf_prog(struct tcb *const tcp, const uint64_t addr, const uint32_t len)
36- if (abbrev(tcp)) {
37- printaddr(addr);
38- } else {
39-- struct ebpf_insns_data eid = {};
40-+ struct ebpf_insns_data eid = {0};
41- struct ebpf_insn insn;
42-
43- print_array(tcp, addr, len, &insn, sizeof(insn),
44-diff --git a/src/sched.c b/src/sched.c
45-index 010366871..2dda5b872 100644
46---- a/src/sched.c
47-+++ b/src/sched.c
48-@@ -111,7 +111,7 @@ static void
49- print_sched_attr(struct tcb *const tcp, const kernel_ulong_t addr,
50- unsigned int usize)
51- {
52-- struct sched_attr attr = {};
53-+ struct sched_attr attr = {0};
54- unsigned int size;
55- bool is_set = false;
56-
57-diff --git a/src/signal.c b/src/signal.c
58-index 98f84d500..8680b10fb 100644
59---- a/src/signal.c
60-+++ b/src/signal.c
61-@@ -257,7 +257,7 @@ print_sigset_addr_len_limit(struct tcb *const tcp, const kernel_ulong_t addr,
62- printaddr(addr);
63- return;
64- }
65-- int mask[NSIG_BYTES / sizeof(int)] = {};
66-+ int mask[NSIG_BYTES / sizeof(int)] = {0};
67- if (umoven_or_printaddr(tcp, addr, len, mask))
68- return;
69- tprints_string(sprintsigmask_n("", mask, len));
70-diff --git a/src/strace.c b/src/strace.c
71-index 649b8d160..9c87e34ed 100644
72---- a/src/strace.c
73-+++ b/src/strace.c
74-@@ -3891,7 +3891,7 @@ trace_syscall(struct tcb *tcp, unsigned int *sig)
75- syscall_entering_finish(tcp, res);
76- return res;
77- } else {
78-- struct timespec ts = {};
79-+ struct timespec ts = {0};
80- int res = syscall_exiting_decode(tcp, &ts);
81- if (res != 0) {
82- res = syscall_exiting_trace(tcp, &ts, res);
83-diff --git a/tests/btrfs.c b/tests/btrfs.c
84-index a3161875b..88112e463 100644
85---- a/tests/btrfs.c
86-+++ b/tests/btrfs.c
87-@@ -313,7 +313,7 @@ btrfs_test_subvol_ioctls(void)
88- char *long_subvol_name;
89- void *bad_pointer = (void *) (unsigned long) 0xdeadbeeffffffeedULL;
90- uint64_t u64val = 0xdeadbeefbadc0dedULL;
91-- struct btrfs_ioctl_vol_args vol_args = {};
92-+ struct btrfs_ioctl_vol_args vol_args = {0};
93- struct btrfs_ioctl_vol_args_v2 vol_args_v2 = {
94- .fd = 2,
95- .flags = max_flags_plus_one(2),
96-@@ -554,7 +554,7 @@ btrfs_test_balance_ioctls(void)
97- .devid = 1,
98- },
99- };
100-- struct btrfs_ioctl_vol_args vol_args = {};
101-+ struct btrfs_ioctl_vol_args vol_args = {0};
102-
103- ioctl(-1, BTRFS_IOC_BALANCE_CTL, 1);
104- printf("ioctl(-1, %s, %sBTRFS_BALANCE_CTL_PAUSE%s)" RVAL_EBADF,
105-@@ -764,7 +764,7 @@ btrfs_print_defrag_range_args(struct btrfs_ioctl_defrag_range_args *args,
106- static void
107- btrfs_test_defrag_ioctls(void)
108- {
109-- struct btrfs_ioctl_vol_args vol_args = {};
110-+ struct btrfs_ioctl_vol_args vol_args = {0};
111- struct btrfs_ioctl_defrag_range_args args = {
112- .start = 0,
113- .len = -1ULL,
114-@@ -1092,7 +1092,7 @@ btrfs_test_ino_lookup_ioctl(void)
115- static void
116- btrfs_test_space_info_ioctl(void)
117- {
118-- struct btrfs_ioctl_space_args args = {};
119-+ struct btrfs_ioctl_space_args args = {0};
120-
121- ioctl(-1, BTRFS_IOC_SPACE_INFO, NULL);
122- printf("ioctl(-1, %s, NULL)" RVAL_EBADF,
123-diff --git a/tests/clock_nanosleep.c b/tests/clock_nanosleep.c
124-index 13c3dad87..4638d492b 100644
125---- a/tests/clock_nanosleep.c
126-+++ b/tests/clock_nanosleep.c
127-@@ -39,7 +39,7 @@ main(void)
128- .ts = { .tv_sec = 0xc0de2, .tv_nsec = 0xc0de3 },
129- .pad = { 0xdeadbeef, 0xbadc0ded }
130- };
131-- const sigset_t set = {};
132-+ const sigset_t set = {0};
133- const struct sigaction act = { .sa_handler = handler };
134- const struct itimerval itv = {
135- .it_interval.tv_usec = 222222,
136-diff --git a/tests/nanosleep.c b/tests/nanosleep.c
137-index 743105e80..2a7ddff5c 100644
138---- a/tests/nanosleep.c
139-+++ b/tests/nanosleep.c
140-@@ -53,7 +53,7 @@ main(void)
141- .ts = { .tv_sec = 0xc0de2, .tv_nsec = 0xc0de3 },
142- .pad = { 0xdeadbeef, 0xbadc0ded }
143- };
144-- const sigset_t set = {};
145-+ const sigset_t set = {0};
146- const struct sigaction act = { .sa_handler = handler };
147- const struct itimerval itv = { .it_value.tv_usec = 111111 };
148-
149-diff --git a/tests/restart_syscall.c b/tests/restart_syscall.c
150-index a9b1d2291..7fd7fb602 100644
151---- a/tests/restart_syscall.c
152-+++ b/tests/restart_syscall.c
153-@@ -26,7 +26,7 @@ main(void)
154- */
155- error_msg_and_skip("x32 is broken");
156- #else
157-- const sigset_t set = {};
158-+ const sigset_t set = {0};
159- const struct sigaction act = { .sa_handler = SIG_IGN };
160- const struct itimerval itv = { .it_interval.tv_usec = 22222,
161- .it_value.tv_usec = 11111 };
162-diff --git a/tests/setrlimit.c b/tests/setrlimit.c
163-index d4953f6f8..60d54fbd8 100644
164---- a/tests/setrlimit.c
165-+++ b/tests/setrlimit.c
166-@@ -39,7 +39,7 @@ main(void)
167- printf("setrlimit(%s, NULL) = %s\n", xlat->str, sprintrc(rc));
168- # endif
169-
170-- struct rlimit libc_rlim = {};
171-+ struct rlimit libc_rlim = {0};
172- if (getrlimit((int) res, &libc_rlim))
173- continue;
174- rlimit[0] = libc_rlim.rlim_cur;
175-diff --git a/tests/timer_create.c b/tests/timer_create.c
176-index e4357b2cf..8d6cd415f 100644
177---- a/tests/timer_create.c
178-+++ b/tests/timer_create.c
179-@@ -24,7 +24,7 @@ main(void)
180- printf("timer_create(CLOCK_REALTIME, NULL, NULL) = %s\n",
181- sprintrc(-1));
182-
183-- int tid[4] = {};
184-+ int tid[4] = {0};
185- struct_sigevent sev = {
186- .sigev_notify = 0xdefaced,
187- .sigev_signo = 0xfacefeed,
188-diff --git a/tests/wait4.c b/tests/wait4.c
189-index faf9423f8..eacee2366 100644
190---- a/tests/wait4.c
191-+++ b/tests/wait4.c
192-@@ -89,7 +89,7 @@ k_wait4(const unsigned int pid, void const *wstatus,
193- static pid_t
194- do_wait4(pid_t pid, int *wstatus, int options, kernel_rusage_t *ru)
195- {
196-- sigset_t mask = {};
197-+ sigset_t mask = {0};
198- sigaddset(&mask, SIGCHLD);
199-
200- assert(sigprocmask(SIG_BLOCK, &mask, NULL) == 0);
201-diff --git a/tests/waitid.c b/tests/waitid.c
202-index 1ed763840..fef941874 100644
203---- a/tests/waitid.c
204-+++ b/tests/waitid.c
205-@@ -146,7 +146,7 @@ do_waitid(const unsigned int idtype,
206- const unsigned int options,
207- const kernel_rusage_t *const rusage)
208- {
209-- sigset_t mask = {};
210-+ sigset_t mask = {0};
211- sigaddset(&mask, SIGCHLD);
212-
213- assert(sigprocmask(SIG_BLOCK, &mask, NULL) == 0);
214---
215-2.44.0
216-
R pkg/strace/patch/0006-Avoid-empty-struct-definition.patch =>
pkg/strace/patch/0004-Avoid-empty-struct-definition.patch
+0,
-0
R pkg/strace/patch/0007-Don-t-omit-second-operand-to-operator.patch =>
pkg/strace/patch/0005-Don-t-omit-second-operand-to-operator.patch
+0,
-0
R pkg/strace/patch/0008-Avoid-unnecessary-VLAs.patch =>
pkg/strace/patch/0006-Avoid-unnecessary-VLAs.patch
+0,
-0
R pkg/strace/patch/0009-Avoid-index-ranges-and-empty-initializer-lists-in-sy.patch =>
pkg/strace/patch/0007-Avoid-index-ranges-and-empty-initializer-lists-in-sy.patch
+0,
-0
R pkg/strace/patch/0010-Use-alloca-when-VLAs-aren-t-available.patch =>
pkg/strace/patch/0008-Use-alloca-when-VLAs-aren-t-available.patch
+0,
-0
R pkg/strace/patch/0011-Avoid-index-ranges.patch =>
pkg/strace/patch/0009-Avoid-index-ranges.patch
+0,
-0
+1,
-1
1@@ -1 +1 @@
2-6.8 r0
3+6.8 r1