* [netdev-net:master 24/38] net/ipv6/netfilter/nf_conntrack_reasm.c:462: undefined reference to `ipv6_frag_thdr_truncated'
@ 2020-11-17 7:49 kernel test robot
2020-11-17 18:34 ` Georg Kohmann
0 siblings, 1 reply; 3+ messages in thread
From: kernel test robot @ 2020-11-17 7:49 UTC (permalink / raw)
To: kbuild-all
[-- Attachment #1: Type: text/plain, Size: 3092 bytes --]
tree: git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net.git master
head: d5bd32a876c8cb677c9cc88dcc7eb498cd0c9397
commit: 9d9e937b1c8be97b424e3e11938e183fcde905c0 [24/38] ipv6/netfilter: Discard first fragment not including all headers
config: x86_64-randconfig-a012-20201115 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-15) 9.3.0
reproduce (this is a W=1 build):
# https://git.kernel.org/pub/scm/linux/kernel/git/netdev/net.git/commit/?id=9d9e937b1c8be97b424e3e11938e183fcde905c0
git remote add netdev-net git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net.git
git fetch --no-tags netdev-net master
git checkout 9d9e937b1c8be97b424e3e11938e183fcde905c0
# save the attached .config to linux build tree
make W=1 ARCH=x86_64
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
All errors (new ones prefixed by >>):
ld: net/ipv6/netfilter/nf_conntrack_reasm.o: in function `nf_ct_frag6_gather':
>> net/ipv6/netfilter/nf_conntrack_reasm.c:462: undefined reference to `ipv6_frag_thdr_truncated'
vim +462 net/ipv6/netfilter/nf_conntrack_reasm.c
439
440 int nf_ct_frag6_gather(struct net *net, struct sk_buff *skb, u32 user)
441 {
442 u16 savethdr = skb->transport_header;
443 u8 nexthdr = NEXTHDR_FRAGMENT;
444 int fhoff, nhoff, ret;
445 struct frag_hdr *fhdr;
446 struct frag_queue *fq;
447 struct ipv6hdr *hdr;
448 u8 prevhdr;
449
450 /* Jumbo payload inhibits frag. header */
451 if (ipv6_hdr(skb)->payload_len == 0) {
452 pr_debug("payload len = 0\n");
453 return 0;
454 }
455
456 if (find_prev_fhdr(skb, &prevhdr, &nhoff, &fhoff) < 0)
457 return 0;
458
459 /* Discard the first fragment if it does not include all headers
460 * RFC 8200, Section 4.5
461 */
> 462 if (ipv6_frag_thdr_truncated(skb, fhoff, &nexthdr)) {
463 pr_debug("Drop incomplete fragment\n");
464 return 0;
465 }
466
467 if (!pskb_may_pull(skb, fhoff + sizeof(*fhdr)))
468 return -ENOMEM;
469
470 skb_set_transport_header(skb, fhoff);
471 hdr = ipv6_hdr(skb);
472 fhdr = (struct frag_hdr *)skb_transport_header(skb);
473
474 skb_orphan(skb);
475 fq = fq_find(net, fhdr->identification, user, hdr,
476 skb->dev ? skb->dev->ifindex : 0);
477 if (fq == NULL) {
478 pr_debug("Can't find and can't create new queue\n");
479 return -ENOMEM;
480 }
481
482 spin_lock_bh(&fq->q.lock);
483
484 ret = nf_ct_frag6_queue(fq, skb, fhdr, nhoff);
485 if (ret == -EPROTO) {
486 skb->transport_header = savethdr;
487 ret = 0;
488 }
489
490 spin_unlock_bh(&fq->q.lock);
491 inet_frag_put(&fq->q);
492 return ret;
493 }
494 EXPORT_SYMBOL_GPL(nf_ct_frag6_gather);
495
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 36355 bytes --]
^ permalink raw reply [flat|nested] 3+ messages in thread* Re: [netdev-net:master 24/38] net/ipv6/netfilter/nf_conntrack_reasm.c:462: undefined reference to `ipv6_frag_thdr_truncated'
2020-11-17 7:49 [netdev-net:master 24/38] net/ipv6/netfilter/nf_conntrack_reasm.c:462: undefined reference to `ipv6_frag_thdr_truncated' kernel test robot
@ 2020-11-17 18:34 ` Georg Kohmann
2020-11-17 18:36 ` Jakub Kicinski
0 siblings, 1 reply; 3+ messages in thread
From: Georg Kohmann @ 2020-11-17 18:34 UTC (permalink / raw)
To: kbuild-all
[-- Attachment #1: Type: text/plain, Size: 3512 bytes --]
On 17.11.2020 08:49, kernel test robot wrote:
> tree: git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net.git master
> head: d5bd32a876c8cb677c9cc88dcc7eb498cd0c9397
> commit: 9d9e937b1c8be97b424e3e11938e183fcde905c0 [24/38] ipv6/netfilter: Discard first fragment not including all headers
> config: x86_64-randconfig-a012-20201115 (attached as .config)
> compiler: gcc-9 (Debian 9.3.0-15) 9.3.0
> reproduce (this is a W=1 build):
> # https://git.kernel.org/pub/scm/linux/kernel/git/netdev/net.git/commit/?id=9d9e937b1c8be97b424e3e11938e183fcde905c0
> git remote add netdev-net git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net.git
> git fetch --no-tags netdev-net master
> git checkout 9d9e937b1c8be97b424e3e11938e183fcde905c0
> # save the attached .config to linux build tree
> make W=1 ARCH=x86_64
>
> If you fix the issue, kindly add following tag as appropriate
> Reported-by: kernel test robot <lkp@intel.com>
>
> All errors (new ones prefixed by >>):
>
> ld: net/ipv6/netfilter/nf_conntrack_reasm.o: in function `nf_ct_frag6_gather':
>>> net/ipv6/netfilter/nf_conntrack_reasm.c:462: undefined reference to `ipv6_frag_thdr_truncated'
Moving ipv6_frag_thdr_truncated() from reassembly.c to exthdrs_core.c seams to fix the issue. I guess this is related to that IPv6 is a module in this build.
Is this the correct way to handle this?
Georg
> vim +462 net/ipv6/netfilter/nf_conntrack_reasm.c
>
> 439
> 440 int nf_ct_frag6_gather(struct net *net, struct sk_buff *skb, u32 user)
> 441 {
> 442 u16 savethdr = skb->transport_header;
> 443 u8 nexthdr = NEXTHDR_FRAGMENT;
> 444 int fhoff, nhoff, ret;
> 445 struct frag_hdr *fhdr;
> 446 struct frag_queue *fq;
> 447 struct ipv6hdr *hdr;
> 448 u8 prevhdr;
> 449
> 450 /* Jumbo payload inhibits frag. header */
> 451 if (ipv6_hdr(skb)->payload_len == 0) {
> 452 pr_debug("payload len = 0\n");
> 453 return 0;
> 454 }
> 455
> 456 if (find_prev_fhdr(skb, &prevhdr, &nhoff, &fhoff) < 0)
> 457 return 0;
> 458
> 459 /* Discard the first fragment if it does not include all headers
> 460 * RFC 8200, Section 4.5
> 461 */
> > 462 if (ipv6_frag_thdr_truncated(skb, fhoff, &nexthdr)) {
> 463 pr_debug("Drop incomplete fragment\n");
> 464 return 0;
> 465 }
> 466
> 467 if (!pskb_may_pull(skb, fhoff + sizeof(*fhdr)))
> 468 return -ENOMEM;
> 469
> 470 skb_set_transport_header(skb, fhoff);
> 471 hdr = ipv6_hdr(skb);
> 472 fhdr = (struct frag_hdr *)skb_transport_header(skb);
> 473
> 474 skb_orphan(skb);
> 475 fq = fq_find(net, fhdr->identification, user, hdr,
> 476 skb->dev ? skb->dev->ifindex : 0);
> 477 if (fq == NULL) {
> 478 pr_debug("Can't find and can't create new queue\n");
> 479 return -ENOMEM;
> 480 }
> 481
> 482 spin_lock_bh(&fq->q.lock);
> 483
> 484 ret = nf_ct_frag6_queue(fq, skb, fhdr, nhoff);
> 485 if (ret == -EPROTO) {
> 486 skb->transport_header = savethdr;
> 487 ret = 0;
> 488 }
> 489
> 490 spin_unlock_bh(&fq->q.lock);
> 491 inet_frag_put(&fq->q);
> 492 return ret;
> 493 }
> 494 EXPORT_SYMBOL_GPL(nf_ct_frag6_gather);
> 495
>
> ---
> 0-DAY CI Kernel Test Service, Intel Corporation
> https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2020-11-17 18:36 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-11-17 7:49 [netdev-net:master 24/38] net/ipv6/netfilter/nf_conntrack_reasm.c:462: undefined reference to `ipv6_frag_thdr_truncated' kernel test robot
2020-11-17 18:34 ` Georg Kohmann
2020-11-17 18:36 ` Jakub Kicinski
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.