linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: kbuild test robot <fengguang.wu@intel.com>
To: Michal Hocko <mhocko@suse.com>
Cc: kbuild-all@01.org, linux-mm@kvack.org
Subject: [memcg:cleanups/kvmalloc 5/5] lib/rhashtable.c:80:3: note: in expansion of macro 'if'
Date: Sat, 7 Jan 2017 10:12:24 +0800	[thread overview]
Message-ID: <201701071022.FlPOYKZ5%fengguang.wu@intel.com> (raw)

[-- Attachment #1: Type: text/plain, Size: 4340 bytes --]

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/mhocko/mm.git cleanups/kvmalloc
head:   351a752d1cd188fbe199f7a42094af72ee90fd63
commit: 351a752d1cd188fbe199f7a42094af72ee90fd63 [5/5] rhashtable: simplify a strange allocation pattern
config: x86_64-randconfig-x012-201701 (attached as .config)
compiler: gcc-6 (Debian 6.2.0-3) 6.2.0 20160901
reproduce:
        git checkout 351a752d1cd188fbe199f7a42094af72ee90fd63
        # save the attached .config to linux build tree
        make ARCH=x86_64 

All warnings (new ones prefixed by >>):

   In file included from arch/x86/include/asm/atomic.h:4:0,
                    from include/linux/atomic.h:4,
                    from lib/rhashtable.c:17:
   lib/rhashtable.c: In function 'alloc_bucket_locks':
   lib/rhashtable.c:80:31: error: 'gfp_' undeclared (first use in this function)
      if (gfpflags_allow_blocking(gfp_))
                                  ^
   include/linux/compiler.h:149:30: note: in definition of macro '__trace_if'
     if (__builtin_constant_p(!!(cond)) ? !!(cond) :   \
                                 ^~~~
>> lib/rhashtable.c:80:3: note: in expansion of macro 'if'
      if (gfpflags_allow_blocking(gfp_))
      ^~
   lib/rhashtable.c:80:31: note: each undeclared identifier is reported only once for each function it appears in
      if (gfpflags_allow_blocking(gfp_))
                                  ^
   include/linux/compiler.h:149:30: note: in definition of macro '__trace_if'
     if (__builtin_constant_p(!!(cond)) ? !!(cond) :   \
                                 ^~~~
>> lib/rhashtable.c:80:3: note: in expansion of macro 'if'
      if (gfpflags_allow_blocking(gfp_))
      ^~

vim +/if +80 lib/rhashtable.c

    11	 *
    12	 * This program is free software; you can redistribute it and/or modify
    13	 * it under the terms of the GNU General Public License version 2 as
    14	 * published by the Free Software Foundation.
    15	 */
    16	
  > 17	#include <linux/atomic.h>
    18	#include <linux/kernel.h>
    19	#include <linux/init.h>
    20	#include <linux/log2.h>
    21	#include <linux/sched.h>
    22	#include <linux/slab.h>
    23	#include <linux/vmalloc.h>
    24	#include <linux/mm.h>
    25	#include <linux/jhash.h>
    26	#include <linux/random.h>
    27	#include <linux/rhashtable.h>
    28	#include <linux/err.h>
    29	#include <linux/export.h>
    30	
    31	#define HASH_DEFAULT_SIZE	64UL
    32	#define HASH_MIN_SIZE		4U
    33	#define BUCKET_LOCKS_PER_CPU	32UL
    34	
    35	static u32 head_hashfn(struct rhashtable *ht,
    36			       const struct bucket_table *tbl,
    37			       const struct rhash_head *he)
    38	{
    39		return rht_head_hashfn(ht, tbl, he, ht->p);
    40	}
    41	
    42	#ifdef CONFIG_PROVE_LOCKING
    43	#define ASSERT_RHT_MUTEX(HT) BUG_ON(!lockdep_rht_mutex_is_held(HT))
    44	
    45	int lockdep_rht_mutex_is_held(struct rhashtable *ht)
    46	{
    47		return (debug_locks) ? lockdep_is_held(&ht->mutex) : 1;
    48	}
    49	EXPORT_SYMBOL_GPL(lockdep_rht_mutex_is_held);
    50	
    51	int lockdep_rht_bucket_is_held(const struct bucket_table *tbl, u32 hash)
    52	{
    53		spinlock_t *lock = rht_bucket_lock(tbl, hash);
    54	
    55		return (debug_locks) ? lockdep_is_held(lock) : 1;
    56	}
    57	EXPORT_SYMBOL_GPL(lockdep_rht_bucket_is_held);
    58	#else
    59	#define ASSERT_RHT_MUTEX(HT)
    60	#endif
    61	
    62	
    63	static int alloc_bucket_locks(struct rhashtable *ht, struct bucket_table *tbl,
    64				      gfp_t gfp)
    65	{
    66		unsigned int i, size;
    67	#if defined(CONFIG_PROVE_LOCKING)
    68		unsigned int nr_pcpus = 2;
    69	#else
    70		unsigned int nr_pcpus = num_possible_cpus();
    71	#endif
    72	
    73		nr_pcpus = min_t(unsigned int, nr_pcpus, 64UL);
    74		size = roundup_pow_of_two(nr_pcpus * ht->p.locks_mul);
    75	
    76		/* Never allocate more than 0.5 locks per bucket */
    77		size = min_t(unsigned int, size, tbl->size >> 1);
    78	
    79		if (sizeof(spinlock_t) != 0) {
  > 80			if (gfpflags_allow_blocking(gfp_))
    81				tbl->locks = kvmalloc(size * sizeof(spinlock_t), gfp);
    82			else
    83				tbl->locks = kmalloc_array(size, sizeof(spinlock_t),

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

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 29636 bytes --]

                 reply	other threads:[~2017-01-07  2:13 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=201701071022.FlPOYKZ5%fengguang.wu@intel.com \
    --to=fengguang.wu@intel.com \
    --cc=kbuild-all@01.org \
    --cc=linux-mm@kvack.org \
    --cc=mhocko@suse.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox