[<prev] [next>] [day] [month] [year] [list]
Message-ID: <202207140528.8qEWv6Hl-lkp@intel.com>
Date: Thu, 14 Jul 2022 05:23:19 +0800
From: kernel test robot <lkp@...el.com>
To: Toke Høiland-Jørgensen <toke@...hat.com>
Cc: kbuild-all@...ts.01.org, linux-kernel@...r.kernel.org
Subject: [toke:xdp-queueing-06 11/17] net/core/dev.c:5038: undefined
reference to `dev_run_xdp_dequeue'
tree: https://git.kernel.org/pub/scm/linux/kernel/git/toke/linux.git xdp-queueing-06
head: eb15b48f1b85d5986f1c2dbaf68c3c27e93f0c0c
commit: 0fb9291256bd9a2e0b9a58ce6755891bcdf21938 [11/17] dev: Add XDP dequeue hook
config: x86_64-randconfig-m001 (https://download.01.org/0day-ci/archive/20220714/202207140528.8qEWv6Hl-lkp@intel.com/config)
compiler: gcc-11 (Debian 11.3.0-3) 11.3.0
reproduce (this is a W=1 build):
# https://git.kernel.org/pub/scm/linux/kernel/git/toke/linux.git/commit/?id=0fb9291256bd9a2e0b9a58ce6755891bcdf21938
git remote add toke https://git.kernel.org/pub/scm/linux/kernel/git/toke/linux.git
git fetch --no-tags toke xdp-queueing-06
git checkout 0fb9291256bd9a2e0b9a58ce6755891bcdf21938
# save the config file
mkdir build_dir && cp config build_dir/.config
make W=1 O=build_dir ARCH=x86_64 SHELL=/bin/bash
If you fix the issue, kindly add following tag where applicable
Reported-by: kernel test robot <lkp@...el.com>
All errors (new ones prefixed by >>):
ld: net/core/dev.o: in function `net_tx_action':
>> net/core/dev.c:5038: undefined reference to `dev_run_xdp_dequeue'
vim +5038 net/core/dev.c
5025
5026 static __latent_entropy void net_tx_action(struct softirq_action *h)
5027 {
5028 struct softnet_data *sd = this_cpu_ptr(&softnet_data);
5029
5030 if (sd->xdp_dequeue) {
5031 struct xdp_dequeue *deq;
5032
5033 local_irq_disable();
5034 deq = sd->xdp_dequeue;
5035 sd->xdp_dequeue = NULL;
5036 local_irq_enable();
5037
> 5038 dev_run_xdp_dequeue(deq);
5039 }
5040
5041 if (sd->completion_queue) {
5042 struct sk_buff *clist;
5043
5044 local_irq_disable();
5045 clist = sd->completion_queue;
5046 sd->completion_queue = NULL;
5047 local_irq_enable();
5048
5049 while (clist) {
5050 struct sk_buff *skb = clist;
5051
5052 clist = clist->next;
5053
5054 WARN_ON(refcount_read(&skb->users));
5055 if (likely(get_kfree_skb_cb(skb)->reason == SKB_REASON_CONSUMED))
5056 trace_consume_skb(skb);
5057 else
5058 trace_kfree_skb(skb, net_tx_action,
5059 SKB_DROP_REASON_NOT_SPECIFIED);
5060
5061 if (skb->fclone != SKB_FCLONE_UNAVAILABLE)
5062 __kfree_skb(skb);
5063 else
5064 __kfree_skb_defer(skb);
5065 }
5066 }
5067
5068 if (sd->output_queue) {
5069 struct Qdisc *head;
5070
5071 local_irq_disable();
5072 head = sd->output_queue;
5073 sd->output_queue = NULL;
5074 sd->output_queue_tailp = &sd->output_queue;
5075 local_irq_enable();
5076
5077 rcu_read_lock();
5078
5079 while (head) {
5080 struct Qdisc *q = head;
5081 spinlock_t *root_lock = NULL;
5082
5083 head = head->next_sched;
5084
5085 /* We need to make sure head->next_sched is read
5086 * before clearing __QDISC_STATE_SCHED
5087 */
5088 smp_mb__before_atomic();
5089
5090 if (!(q->flags & TCQ_F_NOLOCK)) {
5091 root_lock = qdisc_lock(q);
5092 spin_lock(root_lock);
5093 } else if (unlikely(test_bit(__QDISC_STATE_DEACTIVATED,
5094 &q->state))) {
5095 /* There is a synchronize_net() between
5096 * STATE_DEACTIVATED flag being set and
5097 * qdisc_reset()/some_qdisc_is_busy() in
5098 * dev_deactivate(), so we can safely bail out
5099 * early here to avoid data race between
5100 * qdisc_deactivate() and some_qdisc_is_busy()
5101 * for lockless qdisc.
5102 */
5103 clear_bit(__QDISC_STATE_SCHED, &q->state);
5104 continue;
5105 }
5106
5107 clear_bit(__QDISC_STATE_SCHED, &q->state);
5108 qdisc_run(q);
5109 if (root_lock)
5110 spin_unlock(root_lock);
5111 }
5112
5113 rcu_read_unlock();
5114 }
5115
5116 xfrm_dev_backlog(sd);
5117 }
5118
--
0-DAY CI Kernel Test Service
https://01.org/lkp
Powered by blists - more mailing lists