[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20201028124942.GE1042@kadam>
Date: Wed, 28 Oct 2020 15:49:42 +0300
From: Dan Carpenter <dan.carpenter@...cle.com>
To: kbuild@...ts.01.org, Jesper Dangaard Brouer <brouer@...hat.com>,
bpf@...r.kernel.org
Cc: lkp@...el.com, kbuild-all@...ts.01.org,
Jesper Dangaard Brouer <brouer@...hat.com>,
netdev@...r.kernel.org, Daniel Borkmann <borkmann@...earbox.net>,
Alexei Starovoitov <alexei.starovoitov@...il.com>,
maze@...gle.com, lmb@...udflare.com, shaun@...era.io,
Lorenzo Bianconi <lorenzo@...nel.org>, marek@...udflare.com
Subject: Re: [PATCH bpf-next V4 2/5] bpf: bpf_fib_lookup return MTU value as
output when looked up
Hi Jesper,
url: https://github.com/0day-ci/linux/commits/Jesper-Dangaard-Brouer/bpf-New-approach-for-BPF-MTU-handling/20201028-002919
base: https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf.git master
config: i386-randconfig-m021-20201026 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-15) 9.3.0
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@...el.com>
Reported-by: Dan Carpenter <dan.carpenter@...cle.com>
New smatch warnings:
net/core/filter.c:5395 bpf_ipv4_fib_lookup() error: uninitialized symbol 'mtu'.
vim +/mtu +5395 net/core/filter.c
87f5fc7e48dd317 David Ahern 2018-05-09 5281 static int bpf_ipv4_fib_lookup(struct net *net, struct bpf_fib_lookup *params,
4f74fede40df8db David Ahern 2018-05-21 5282 u32 flags, bool check_mtu)
87f5fc7e48dd317 David Ahern 2018-05-09 5283 {
eba618abacade71 David Ahern 2019-04-02 5284 struct fib_nh_common *nhc;
87f5fc7e48dd317 David Ahern 2018-05-09 5285 struct in_device *in_dev;
87f5fc7e48dd317 David Ahern 2018-05-09 5286 struct neighbour *neigh;
87f5fc7e48dd317 David Ahern 2018-05-09 5287 struct net_device *dev;
87f5fc7e48dd317 David Ahern 2018-05-09 5288 struct fib_result res;
87f5fc7e48dd317 David Ahern 2018-05-09 5289 struct flowi4 fl4;
87f5fc7e48dd317 David Ahern 2018-05-09 5290 int err;
4f74fede40df8db David Ahern 2018-05-21 5291 u32 mtu;
^^^^^^^^
87f5fc7e48dd317 David Ahern 2018-05-09 5292
87f5fc7e48dd317 David Ahern 2018-05-09 5293 dev = dev_get_by_index_rcu(net, params->ifindex);
87f5fc7e48dd317 David Ahern 2018-05-09 5294 if (unlikely(!dev))
87f5fc7e48dd317 David Ahern 2018-05-09 5295 return -ENODEV;
87f5fc7e48dd317 David Ahern 2018-05-09 5296
87f5fc7e48dd317 David Ahern 2018-05-09 5297 /* verify forwarding is enabled on this interface */
87f5fc7e48dd317 David Ahern 2018-05-09 5298 in_dev = __in_dev_get_rcu(dev);
87f5fc7e48dd317 David Ahern 2018-05-09 5299 if (unlikely(!in_dev || !IN_DEV_FORWARD(in_dev)))
4c79579b44b1876 David Ahern 2018-06-26 5300 return BPF_FIB_LKUP_RET_FWD_DISABLED;
87f5fc7e48dd317 David Ahern 2018-05-09 5301
87f5fc7e48dd317 David Ahern 2018-05-09 5302 if (flags & BPF_FIB_LOOKUP_OUTPUT) {
87f5fc7e48dd317 David Ahern 2018-05-09 5303 fl4.flowi4_iif = 1;
87f5fc7e48dd317 David Ahern 2018-05-09 5304 fl4.flowi4_oif = params->ifindex;
87f5fc7e48dd317 David Ahern 2018-05-09 5305 } else {
87f5fc7e48dd317 David Ahern 2018-05-09 5306 fl4.flowi4_iif = params->ifindex;
87f5fc7e48dd317 David Ahern 2018-05-09 5307 fl4.flowi4_oif = 0;
87f5fc7e48dd317 David Ahern 2018-05-09 5308 }
87f5fc7e48dd317 David Ahern 2018-05-09 5309 fl4.flowi4_tos = params->tos & IPTOS_RT_MASK;
87f5fc7e48dd317 David Ahern 2018-05-09 5310 fl4.flowi4_scope = RT_SCOPE_UNIVERSE;
87f5fc7e48dd317 David Ahern 2018-05-09 5311 fl4.flowi4_flags = 0;
87f5fc7e48dd317 David Ahern 2018-05-09 5312
87f5fc7e48dd317 David Ahern 2018-05-09 5313 fl4.flowi4_proto = params->l4_protocol;
87f5fc7e48dd317 David Ahern 2018-05-09 5314 fl4.daddr = params->ipv4_dst;
87f5fc7e48dd317 David Ahern 2018-05-09 5315 fl4.saddr = params->ipv4_src;
87f5fc7e48dd317 David Ahern 2018-05-09 5316 fl4.fl4_sport = params->sport;
87f5fc7e48dd317 David Ahern 2018-05-09 5317 fl4.fl4_dport = params->dport;
1869e226a7b3ef7 David Ahern 2020-09-13 5318 fl4.flowi4_multipath_hash = 0;
87f5fc7e48dd317 David Ahern 2018-05-09 5319
87f5fc7e48dd317 David Ahern 2018-05-09 5320 if (flags & BPF_FIB_LOOKUP_DIRECT) {
87f5fc7e48dd317 David Ahern 2018-05-09 5321 u32 tbid = l3mdev_fib_table_rcu(dev) ? : RT_TABLE_MAIN;
87f5fc7e48dd317 David Ahern 2018-05-09 5322 struct fib_table *tb;
87f5fc7e48dd317 David Ahern 2018-05-09 5323
87f5fc7e48dd317 David Ahern 2018-05-09 5324 tb = fib_get_table(net, tbid);
87f5fc7e48dd317 David Ahern 2018-05-09 5325 if (unlikely(!tb))
4c79579b44b1876 David Ahern 2018-06-26 5326 return BPF_FIB_LKUP_RET_NOT_FWDED;
87f5fc7e48dd317 David Ahern 2018-05-09 5327
87f5fc7e48dd317 David Ahern 2018-05-09 5328 err = fib_table_lookup(tb, &fl4, &res, FIB_LOOKUP_NOREF);
87f5fc7e48dd317 David Ahern 2018-05-09 5329 } else {
87f5fc7e48dd317 David Ahern 2018-05-09 5330 fl4.flowi4_mark = 0;
87f5fc7e48dd317 David Ahern 2018-05-09 5331 fl4.flowi4_secid = 0;
87f5fc7e48dd317 David Ahern 2018-05-09 5332 fl4.flowi4_tun_key.tun_id = 0;
87f5fc7e48dd317 David Ahern 2018-05-09 5333 fl4.flowi4_uid = sock_net_uid(net, NULL);
87f5fc7e48dd317 David Ahern 2018-05-09 5334
87f5fc7e48dd317 David Ahern 2018-05-09 5335 err = fib_lookup(net, &fl4, &res, FIB_LOOKUP_NOREF);
87f5fc7e48dd317 David Ahern 2018-05-09 5336 }
87f5fc7e48dd317 David Ahern 2018-05-09 5337
4c79579b44b1876 David Ahern 2018-06-26 5338 if (err) {
4c79579b44b1876 David Ahern 2018-06-26 5339 /* map fib lookup errors to RTN_ type */
4c79579b44b1876 David Ahern 2018-06-26 5340 if (err == -EINVAL)
4c79579b44b1876 David Ahern 2018-06-26 5341 return BPF_FIB_LKUP_RET_BLACKHOLE;
4c79579b44b1876 David Ahern 2018-06-26 5342 if (err == -EHOSTUNREACH)
4c79579b44b1876 David Ahern 2018-06-26 5343 return BPF_FIB_LKUP_RET_UNREACHABLE;
4c79579b44b1876 David Ahern 2018-06-26 5344 if (err == -EACCES)
4c79579b44b1876 David Ahern 2018-06-26 5345 return BPF_FIB_LKUP_RET_PROHIBIT;
4c79579b44b1876 David Ahern 2018-06-26 5346
4c79579b44b1876 David Ahern 2018-06-26 5347 return BPF_FIB_LKUP_RET_NOT_FWDED;
4c79579b44b1876 David Ahern 2018-06-26 5348 }
4c79579b44b1876 David Ahern 2018-06-26 5349
4c79579b44b1876 David Ahern 2018-06-26 5350 if (res.type != RTN_UNICAST)
4c79579b44b1876 David Ahern 2018-06-26 5351 return BPF_FIB_LKUP_RET_NOT_FWDED;
87f5fc7e48dd317 David Ahern 2018-05-09 5352
5481d73f81549e2 David Ahern 2019-06-03 5353 if (fib_info_num_path(res.fi) > 1)
87f5fc7e48dd317 David Ahern 2018-05-09 5354 fib_select_path(net, &res, &fl4, NULL);
87f5fc7e48dd317 David Ahern 2018-05-09 5355
4f74fede40df8db David Ahern 2018-05-21 5356 if (check_mtu) {
4f74fede40df8db David Ahern 2018-05-21 5357 mtu = ip_mtu_from_fib_result(&res, params->ipv4_dst);
88ffc2c2e37ebb3 Jesper Dangaard Brouer 2020-10-27 5358 if (params->tot_len > mtu) {
88ffc2c2e37ebb3 Jesper Dangaard Brouer 2020-10-27 5359 params->mtu = mtu; /* union with tot_len */
4c79579b44b1876 David Ahern 2018-06-26 5360 return BPF_FIB_LKUP_RET_FRAG_NEEDED;
4f74fede40df8db David Ahern 2018-05-21 5361 }
88ffc2c2e37ebb3 Jesper Dangaard Brouer 2020-10-27 5362 }
"mtu" not initialized on else path.
4f74fede40df8db David Ahern 2018-05-21 5363
eba618abacade71 David Ahern 2019-04-02 5364 nhc = res.nhc;
87f5fc7e48dd317 David Ahern 2018-05-09 5365
87f5fc7e48dd317 David Ahern 2018-05-09 5366 /* do not handle lwt encaps right now */
eba618abacade71 David Ahern 2019-04-02 5367 if (nhc->nhc_lwtstate)
4c79579b44b1876 David Ahern 2018-06-26 5368 return BPF_FIB_LKUP_RET_UNSUPP_LWT;
87f5fc7e48dd317 David Ahern 2018-05-09 5369
eba618abacade71 David Ahern 2019-04-02 5370 dev = nhc->nhc_dev;
87f5fc7e48dd317 David Ahern 2018-05-09 5371
87f5fc7e48dd317 David Ahern 2018-05-09 5372 params->rt_metric = res.fi->fib_priority;
d1c362e1dd68a42 Toke Høiland-Jørgensen 2020-10-09 5373 params->ifindex = dev->ifindex;
87f5fc7e48dd317 David Ahern 2018-05-09 5374
87f5fc7e48dd317 David Ahern 2018-05-09 5375 /* xdp and cls_bpf programs are run in RCU-bh so
87f5fc7e48dd317 David Ahern 2018-05-09 5376 * rcu_read_lock_bh is not needed here
87f5fc7e48dd317 David Ahern 2018-05-09 5377 */
6f5f68d05ec0f64 David Ahern 2019-04-05 5378 if (likely(nhc->nhc_gw_family != AF_INET6)) {
6f5f68d05ec0f64 David Ahern 2019-04-05 5379 if (nhc->nhc_gw_family)
6f5f68d05ec0f64 David Ahern 2019-04-05 5380 params->ipv4_dst = nhc->nhc_gw.ipv4;
6f5f68d05ec0f64 David Ahern 2019-04-05 5381
6f5f68d05ec0f64 David Ahern 2019-04-05 5382 neigh = __ipv4_neigh_lookup_noref(dev,
6f5f68d05ec0f64 David Ahern 2019-04-05 5383 (__force u32)params->ipv4_dst);
6f5f68d05ec0f64 David Ahern 2019-04-05 5384 } else {
6f5f68d05ec0f64 David Ahern 2019-04-05 5385 struct in6_addr *dst = (struct in6_addr *)params->ipv6_dst;
6f5f68d05ec0f64 David Ahern 2019-04-05 5386
6f5f68d05ec0f64 David Ahern 2019-04-05 5387 params->family = AF_INET6;
6f5f68d05ec0f64 David Ahern 2019-04-05 5388 *dst = nhc->nhc_gw.ipv6;
6f5f68d05ec0f64 David Ahern 2019-04-05 5389 neigh = __ipv6_neigh_lookup_noref_stub(dev, dst);
6f5f68d05ec0f64 David Ahern 2019-04-05 5390 }
6f5f68d05ec0f64 David Ahern 2019-04-05 5391
4c79579b44b1876 David Ahern 2018-06-26 5392 if (!neigh)
4c79579b44b1876 David Ahern 2018-06-26 5393 return BPF_FIB_LKUP_RET_NO_NEIGH;
87f5fc7e48dd317 David Ahern 2018-05-09 5394
88ffc2c2e37ebb3 Jesper Dangaard Brouer 2020-10-27 @5395 return bpf_fib_set_fwd_params(params, neigh, dev, mtu);
^^^
Uninitialized variable warning.
87f5fc7e48dd317 David Ahern 2018-05-09 5396 }
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
Download attachment ".config.gz" of type "application/gzip" (39749 bytes)
Powered by blists - more mailing lists