lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite for Android: free password hash cracker in your pocket
[<prev] [next>] [day] [month] [year] [list]
Message-ID: <201712172217.BYdv4o6k%fengguang.wu@intel.com>
Date:   Sun, 17 Dec 2017 22:34:19 +0800
From:   kbuild test robot <fengguang.wu@...el.com>
To:     Will Deacon <will.deacon@....com>
Cc:     kbuild-all@...org, linux-kernel@...r.kernel.org,
        tipbuild@...or.com, Ingo Molnar <mingo@...nel.org>
Subject: [tip:WIP.x86/pti.entry 10/39] include/linux/compiler.h:344:2: error:
 implicit declaration of function 'smp_read_barrier_depends'

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git WIP.x86/pti.entry
head:   6891282dd3ab7fead975ed52d0f7f8da37ab96a5
commit: c2bc66082e1048c7573d72e62f597bdc5ce13fea [10/39] locking/barriers: Add implicit smp_read_barrier_depends() to READ_ONCE()
config: h8300-h8300h-sim_defconfig (attached as .config)
compiler: h8300-linux-gcc (GCC) 7.2.0
reproduce:
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        git checkout c2bc66082e1048c7573d72e62f597bdc5ce13fea
        # save the attached .config to linux build tree
        make.cross ARCH=h8300 

All error/warnings (new ones prefixed by >>):

   In file included from include/uapi/linux/stddef.h:2:0,
                    from include/linux/stddef.h:5,
                    from arch/h8300/kernel/asm-offsets.c:12:
   include/linux/list.h: In function 'list_empty':
>> include/linux/compiler.h:344:2: error: implicit declaration of function 'smp_read_barrier_depends' [-Werror=implicit-function-declaration]
     smp_read_barrier_depends(); /* Enforce dependency ordering from x */ \
     ^
>> include/linux/compiler.h:347:22: note: in expansion of macro '__READ_ONCE'
    #define READ_ONCE(x) __READ_ONCE(x, 1)
                         ^~~~~~~~~~~
>> include/linux/list.h:203:9: note: in expansion of macro 'READ_ONCE'
     return READ_ONCE(head->next) == head;
            ^~~~~~~~~
   cc1: some warnings being treated as errors
   make[2]: *** [arch/h8300/kernel/asm-offsets.s] Error 1
   make[2]: Target '__build' not remade because of errors.
   make[1]: *** [prepare0] Error 2
   make[1]: Target 'prepare' not remade because of errors.
   make: *** [sub-make] Error 2

vim +/smp_read_barrier_depends +344 include/linux/compiler.h

   313	
   314	/*
   315	 * Prevent the compiler from merging or refetching reads or writes. The
   316	 * compiler is also forbidden from reordering successive instances of
   317	 * READ_ONCE, WRITE_ONCE and ACCESS_ONCE (see below), but only when the
   318	 * compiler is aware of some particular ordering.  One way to make the
   319	 * compiler aware of ordering is to put the two invocations of READ_ONCE,
   320	 * WRITE_ONCE or ACCESS_ONCE() in different C statements.
   321	 *
   322	 * In contrast to ACCESS_ONCE these two macros will also work on aggregate
   323	 * data types like structs or unions. If the size of the accessed data
   324	 * type exceeds the word size of the machine (e.g., 32 bits or 64 bits)
   325	 * READ_ONCE() and WRITE_ONCE() will fall back to memcpy(). There's at
   326	 * least two memcpy()s: one for the __builtin_memcpy() and then one for
   327	 * the macro doing the copy of variable - '__u' allocated on the stack.
   328	 *
   329	 * Their two major use cases are: (1) Mediating communication between
   330	 * process-level code and irq/NMI handlers, all running on the same CPU,
   331	 * and (2) Ensuring that the compiler does not  fold, spindle, or otherwise
   332	 * mutilate accesses that either do not require ordering or that interact
   333	 * with an explicit memory barrier or atomic instruction that provides the
   334	 * required ordering.
   335	 */
   336	
   337	#define __READ_ONCE(x, check)						\
   338	({									\
   339		union { typeof(x) __val; char __c[1]; } __u;			\
   340		if (check)							\
   341			__read_once_size(&(x), __u.__c, sizeof(x));		\
   342		else								\
   343			__read_once_size_nocheck(&(x), __u.__c, sizeof(x));	\
 > 344		smp_read_barrier_depends(); /* Enforce dependency ordering from x */ \
   345		__u.__val;							\
   346	})
 > 347	#define READ_ONCE(x) __READ_ONCE(x, 1)
   348	

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

Download attachment ".config.gz" of type "application/gzip" (4674 bytes)

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ