tree: https://github.com/dsahern/linux rtnl-dump-enhancements head: 745e7e3c45bd516de34f29a76f6f631c1a9ea2de commit: cd8ec66ac455ecb49881285536683b736e453977 [24/27] net/ipv6: Plumb support for filtering route dumps
New smatch warnings: net/ipv6/ip6_fib.c:645 inet6_dump_fib() error: uninitialized symbol 'h'. Old smatch warnings: net/ipv6/ip6_fib.c:1891 fib6_walk_continue() warn: missing break? reassigning 'w->state' # https://github.com/dsahern/linux/commit/cd8ec66ac455ecb49881285536683b736e453977 git remote add dsahern-linux https://github.com/dsahern/linux git remote update dsahern-linux git checkout cd8ec66ac455ecb49881285536683b736e453977 vim +/h +645 net/ipv6/ip6_fib.c 1b43af54 Patrick McHardy 2006-08-10 568 c127ea2c Thomas Graf 2007-03-22 569 static int inet6_dump_fib(struct sk_buff *skb, struct netlink_callback *cb) 1b43af54 Patrick McHardy 2006-08-10 570 { 1b435d3d David Ahern 2018-10-01 571 const struct nlmsghdr *nlh = cb->nlh; 3b1e0a65 YOSHIFUJI Hideaki 2008-03-26 572 struct net *net = sock_net(skb->sk); d3190d3a David Ahern 2018-10-01 573 struct rt6_rtnl_dump_arg arg = {}; 1b43af54 Patrick McHardy 2006-08-10 574 unsigned int h, s_h; ^^^^^^^^^^^^^^ 1b43af54 Patrick McHardy 2006-08-10 575 unsigned int e = 0, s_e; 94b2cfe0 Hannes Frederic Sowa 2014-10-06 576 struct fib6_walker *w; 1b43af54 Patrick McHardy 2006-08-10 577 struct fib6_table *tb; 58f09b78 Daniel Lezcano 2008-03-03 578 struct hlist_head *head; 1b43af54 Patrick McHardy 2006-08-10 579 int res = 0; 1b43af54 Patrick McHardy 2006-08-10 580 1b435d3d David Ahern 2018-10-01 581 if (cb->strict_check) { d3190d3a David Ahern 2018-10-01 582 int err = ip_valid_fib_dump_req(nlh, &arg.filter, cb->extack); 1b435d3d David Ahern 2018-10-01 583 1b435d3d David Ahern 2018-10-01 584 if (err) 1b435d3d David Ahern 2018-10-01 585 return err; 1b435d3d David Ahern 2018-10-01 586 } 1b435d3d David Ahern 2018-10-01 587 1b43af54 Patrick McHardy 2006-08-10 588 s_h = cb->args[0]; 1b43af54 Patrick McHardy 2006-08-10 589 s_e = cb->args[1]; 1b43af54 Patrick McHardy 2006-08-10 590 1b43af54 Patrick McHardy 2006-08-10 591 w = (void *)cb->args[2]; 507c9b1e David S. Miller 2011-12-03 592 if (!w) { 1b43af54 Patrick McHardy 2006-08-10 593 /* New dump: 1b43af54 Patrick McHardy 2006-08-10 594 * 1b43af54 Patrick McHardy 2006-08-10 595 * 1. hook callback destructor. 1b43af54 Patrick McHardy 2006-08-10 596 */ 1b43af54 Patrick McHardy 2006-08-10 597 cb->args[3] = (long)cb->done; 1b43af54 Patrick McHardy 2006-08-10 598 cb->done = fib6_dump_done; 1b43af54 Patrick McHardy 2006-08-10 599 1b43af54 Patrick McHardy 2006-08-10 600 /* 1b43af54 Patrick McHardy 2006-08-10 601 * 2. allocate and initialize walker. 1b43af54 Patrick McHardy 2006-08-10 602 */ 1b43af54 Patrick McHardy 2006-08-10 603 w = kzalloc(sizeof(*w), GFP_ATOMIC); 507c9b1e David S. Miller 2011-12-03 604 if (!w) 1b43af54 Patrick McHardy 2006-08-10 605 return -ENOMEM; 1b43af54 Patrick McHardy 2006-08-10 606 w->func = fib6_dump_node; 1b43af54 Patrick McHardy 2006-08-10 607 cb->args[2] = (long)w; 1b43af54 Patrick McHardy 2006-08-10 608 } 1b43af54 Patrick McHardy 2006-08-10 609 1b43af54 Patrick McHardy 2006-08-10 610 arg.skb = skb; 1b43af54 Patrick McHardy 2006-08-10 611 arg.cb = cb; 191cd582 Brian Haley 2008-08-14 612 arg.net = net; 1b43af54 Patrick McHardy 2006-08-10 613 w->args = &arg; 1b43af54 Patrick McHardy 2006-08-10 614 e67f88dd Eric Dumazet 2011-04-27 615 rcu_read_lock(); cd8ec66a David Ahern 2018-10-01 616 cd8ec66a David Ahern 2018-10-01 617 if (arg.filter.ifindex) { cd8ec66a David Ahern 2018-10-01 618 arg.filter.dev = dev_get_by_index_rcu(net, arg.filter.ifindex); cd8ec66a David Ahern 2018-10-01 619 if (!arg.filter.dev) { cd8ec66a David Ahern 2018-10-01 620 res = -ENODEV; cd8ec66a David Ahern 2018-10-01 621 goto out; ^^^^^^^^^ cd8ec66a David Ahern 2018-10-01 622 } cd8ec66a David Ahern 2018-10-01 623 } cd8ec66a David Ahern 2018-10-01 624 a33bc5c1 Neil Horman 2009-07-30 625 for (h = s_h; h < FIB6_TABLE_HASHSZ; h++, s_e = 0) { ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1b43af54 Patrick McHardy 2006-08-10 626 e = 0; 58f09b78 Daniel Lezcano 2008-03-03 627 head = &net->ipv6.fib_table_hash[h]; b67bfe0d Sasha Levin 2013-02-27 628 hlist_for_each_entry_rcu(tb, head, tb6_hlist) { 1b43af54 Patrick McHardy 2006-08-10 629 if (e < s_e) 1b43af54 Patrick McHardy 2006-08-10 630 goto next; cd8ec66a David Ahern 2018-10-01 631 if (arg.filter.table_id && cd8ec66a David Ahern 2018-10-01 632 arg.filter.table_id != tb->tb6_id) cd8ec66a David Ahern 2018-10-01 633 goto next; cd8ec66a David Ahern 2018-10-01 634 1b43af54 Patrick McHardy 2006-08-10 635 res = fib6_dump_table(tb, skb, cb); 1b43af54 Patrick McHardy 2006-08-10 636 if (res != 0) 1b43af54 Patrick McHardy 2006-08-10 637 goto out; 1b43af54 Patrick McHardy 2006-08-10 638 next: 1b43af54 Patrick McHardy 2006-08-10 639 e++; 1b43af54 Patrick McHardy 2006-08-10 640 } 1b43af54 Patrick McHardy 2006-08-10 641 } 1b43af54 Patrick McHardy 2006-08-10 642 out: e67f88dd Eric Dumazet 2011-04-27 643 rcu_read_unlock(); 1b43af54 Patrick McHardy 2006-08-10 644 cb->args[1] = e; 1b43af54 Patrick McHardy 2006-08-10 @645 cb->args[0] = h; ^^^^^^^^^^^^^^^ 1b43af54 Patrick McHardy 2006-08-10 646 1b43af54 Patrick McHardy 2006-08-10 647 res = res < 0 ? res : skb->len; 1b43af54 Patrick McHardy 2006-08-10 648 if (res <= 0) 1b43af54 Patrick McHardy 2006-08-10 649 fib6_dump_end(cb); 1b43af54 Patrick McHardy 2006-08-10 650 return res; 1b43af54 Patrick McHardy 2006-08-10 651 } ^1da177e Linus Torvalds 2005-04-16 652 :::::: The code at line 645 was first introduced by commit :::::: 1b43af5480c351dbcb2eef478bafe179cbeb6e83 [IPV6]: Increase number of possible routing tables to 2^32 :::::: TO: Patrick McHardy <ka...@trash.net> :::::: CC: David S. Miller <da...@sunset.davemloft.net> --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation _______________________________________________ kbuild mailing list kbuild@lists.01.org https://lists.01.org/mailman/listinfo/kbuild