Re: [rcu:dev.2019.09.23a 65/77] kernel//rcu/tree.c:2770:3: error: implicit declaration of function 'kfree'; did you mean 'kvfree'?

2019-09-24 Thread Paul E. McKenney
On Tue, Sep 24, 2019 at 10:21:54AM +0800, kbuild test robot wrote:
> tree:   
> https://kernel.googlesource.com/pub/scm/linux/kernel/git/paulmck/linux-rcu.git
>  dev.2019.09.23a
> head:   97de53b94582c208ee239178b208b8e8b9472585
> commit: 06b68648e6084488b79de47a2cfa307a1b9668b9 [65/77] rcu: Remove 
> kfree_rcu() special casing and lazy-callback handling
> config: x86_64-randconfig-c004-201938 (attached as .config)
> compiler: gcc-7 (Debian 7.4.0-13) 7.4.0
> reproduce:
> git checkout 06b68648e6084488b79de47a2cfa307a1b9668b9
> # save the attached .config to linux build tree
> make ARCH=x86_64 
> 
> If you fix the issue, kindly add following tag
> Reported-by: kbuild test robot 
> 
> All errors (new ones prefixed by >>):
> 
>kernel//rcu/tree.c: In function 'kfree_rcu_work':
> >> kernel//rcu/tree.c:2770:3: error: implicit declaration of function 
> >> 'kfree'; did you mean 'kvfree'? [-Werror=implicit-function-declaration]
>   kfree((void *)head - offset);
>   ^
>   kvfree
>cc1: some warnings being treated as errors

Good catch, missing #include of slab.h, fix posted to be squashed with
the original commit.

Thanx, Paul

> vim +2770 kernel//rcu/tree.c
> 
>   2739
>   2740/*
>   2741 * This function is invoked in workqueue context after a grace 
> period.
>   2742 * It frees all the objects queued on ->head_free.
>   2743 */
>   2744static void kfree_rcu_work(struct work_struct *work)
>   2745{
>   2746unsigned long flags;
>   2747struct rcu_head *head, *next;
>   2748struct kfree_rcu_cpu *krcp;
>   2749struct kfree_rcu_cpu_work *krwp;
>   2750
>   2751krwp = container_of(to_rcu_work(work),
>   2752struct kfree_rcu_cpu_work, 
> rcu_work);
>   2753krcp = krwp->krcp;
>   2754spin_lock_irqsave(>lock, flags);
>   2755head = krwp->head_free;
>   2756krwp->head_free = NULL;
>   2757spin_unlock_irqrestore(>lock, flags);
>   2758
>   2759// List "head" is now private, so traverse locklessly.
>   2760for (; head; head = next) {
>   2761unsigned long offset = (unsigned 
> long)head->func;
>   2762
>   2763next = head->next;
>   2764// Potentially optimize with kfree_bulk in 
> future.
>   2765debug_rcu_head_unqueue(head);
>   2766rcu_lock_acquire(_callback_map);
>   2767trace_rcu_invoke_kfree_callback(rcu_state.name, 
> head, offset);
>   2768
>   2769/* Could be possible to optimize with 
> kfree_bulk in future */
> > 2770kfree((void *)head - offset);
>   2771
>   2772rcu_lock_release(_callback_map);
>   2773cond_resched_tasks_rcu_qs();
>   2774}
>   2775}
>   2776
> 
> ---
> 0-DAY kernel test infrastructureOpen Source Technology Center
> https://lists.01.org/pipermail/kbuild-all   Intel Corporation




[rcu:dev.2019.09.23a 65/77] kernel//rcu/tree.c:2770:3: error: implicit declaration of function 'kfree'; did you mean 'kvfree'?

2019-09-23 Thread kbuild test robot
tree:   
https://kernel.googlesource.com/pub/scm/linux/kernel/git/paulmck/linux-rcu.git 
dev.2019.09.23a
head:   97de53b94582c208ee239178b208b8e8b9472585
commit: 06b68648e6084488b79de47a2cfa307a1b9668b9 [65/77] rcu: Remove 
kfree_rcu() special casing and lazy-callback handling
config: x86_64-randconfig-c004-201938 (attached as .config)
compiler: gcc-7 (Debian 7.4.0-13) 7.4.0
reproduce:
git checkout 06b68648e6084488b79de47a2cfa307a1b9668b9
# save the attached .config to linux build tree
make ARCH=x86_64 

If you fix the issue, kindly add following tag
Reported-by: kbuild test robot 

All errors (new ones prefixed by >>):

   kernel//rcu/tree.c: In function 'kfree_rcu_work':
>> kernel//rcu/tree.c:2770:3: error: implicit declaration of function 'kfree'; 
>> did you mean 'kvfree'? [-Werror=implicit-function-declaration]
  kfree((void *)head - offset);
  ^
  kvfree
   cc1: some warnings being treated as errors

vim +2770 kernel//rcu/tree.c

  2739  
  2740  /*
  2741   * This function is invoked in workqueue context after a grace period.
  2742   * It frees all the objects queued on ->head_free.
  2743   */
  2744  static void kfree_rcu_work(struct work_struct *work)
  2745  {
  2746  unsigned long flags;
  2747  struct rcu_head *head, *next;
  2748  struct kfree_rcu_cpu *krcp;
  2749  struct kfree_rcu_cpu_work *krwp;
  2750  
  2751  krwp = container_of(to_rcu_work(work),
  2752  struct kfree_rcu_cpu_work, rcu_work);
  2753  krcp = krwp->krcp;
  2754  spin_lock_irqsave(>lock, flags);
  2755  head = krwp->head_free;
  2756  krwp->head_free = NULL;
  2757  spin_unlock_irqrestore(>lock, flags);
  2758  
  2759  // List "head" is now private, so traverse locklessly.
  2760  for (; head; head = next) {
  2761  unsigned long offset = (unsigned long)head->func;
  2762  
  2763  next = head->next;
  2764  // Potentially optimize with kfree_bulk in future.
  2765  debug_rcu_head_unqueue(head);
  2766  rcu_lock_acquire(_callback_map);
  2767  trace_rcu_invoke_kfree_callback(rcu_state.name, head, 
offset);
  2768  
  2769  /* Could be possible to optimize with kfree_bulk in 
future */
> 2770  kfree((void *)head - offset);
  2771  
  2772  rcu_lock_release(_callback_map);
  2773  cond_resched_tasks_rcu_qs();
  2774  }
  2775  }
  2776  

---
0-DAY kernel test infrastructureOpen Source Technology Center
https://lists.01.org/pipermail/kbuild-all   Intel Corporation


.config.gz
Description: application/gzip