Re: [PATCH] locking/spinlock/debug: snapshot lock fields
From: kbuild test robot
Date: Mon Oct 23 2017 - 16:27:08 EST
Hi Mark,
[auto build test WARNING on tip/locking/core]
[also build test WARNING on v4.14-rc6 next-20171018]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]
url: https://github.com/0day-ci/linux/commits/Mark-Rutland/locking-spinlock-debug-snapshot-lock-fields/20171024-035933
config: i386-randconfig-x003-201743 (attached as .config)
compiler: gcc-6 (Debian 6.2.0-3) 6.2.0 20160901
reproduce:
# save the attached .config to linux build tree
make ARCH=i386
All warnings (new ones prefixed by >>):
In file included from include/linux/linkage.h:4:0,
from include/linux/preempt.h:9,
from include/linux/spinlock.h:50,
from kernel/locking/spinlock_debug.c:9:
kernel/locking/spinlock_debug.c: In function 'debug_spin_unlock':
kernel/locking/spinlock_debug.c:124:14: error: implicit declaration of function 'arch_spin_value_unlocked' [-Werror=implicit-function-declaration]
SPIN_BUG_ON(arch_spin_value_unlocked(lock.raw_lock), lockp, lock,
^
include/linux/compiler.h:131:34: note: in definition of macro '__branch_check__'
______r = __builtin_expect(!!(x), expect); \
^
>> kernel/locking/spinlock_debug.c:81:6: note: in expansion of macro 'unlikely'
if (unlikely(cond)) spin_bug(lockp, lock, msg)
^~~~~~~~
kernel/locking/spinlock_debug.c:124:2: note: in expansion of macro 'SPIN_BUG_ON'
SPIN_BUG_ON(arch_spin_value_unlocked(lock.raw_lock), lockp, lock,
^~~~~~~~~~~
kernel/locking/spinlock_debug.c: In function 'do_raw_spin_trylock':
kernel/locking/spinlock_debug.c:154:49: error: macro "SPIN_BUG_ON" requires 4 arguments, but only 3 given
SPIN_BUG_ON(!ret, lock, "trylock failure on UP");
^
kernel/locking/spinlock_debug.c:154:2: error: 'SPIN_BUG_ON' undeclared (first use in this function)
SPIN_BUG_ON(!ret, lock, "trylock failure on UP");
^~~~~~~~~~~
kernel/locking/spinlock_debug.c:154:2: note: each undeclared identifier is reported only once for each function it appears in
cc1: some warnings being treated as errors
vim +/unlikely +81 kernel/locking/spinlock_debug.c
> 9 #include <linux/spinlock.h>
10 #include <linux/nmi.h>
11 #include <linux/interrupt.h>
12 #include <linux/debug_locks.h>
13 #include <linux/delay.h>
14 #include <linux/export.h>
15
16 void __raw_spin_lock_init(raw_spinlock_t *lock, const char *name,
17 struct lock_class_key *key)
18 {
19 #ifdef CONFIG_DEBUG_LOCK_ALLOC
20 /*
21 * Make sure we are not reinitializing a held lock:
22 */
23 debug_check_no_locks_freed((void *)lock, sizeof(*lock));
24 lockdep_init_map(&lock->dep_map, name, key, 0);
25 #endif
26 lock->raw_lock = (arch_spinlock_t)__ARCH_SPIN_LOCK_UNLOCKED;
27 lock->magic = SPINLOCK_MAGIC;
28 lock->owner = SPINLOCK_OWNER_INIT;
29 lock->owner_cpu = -1;
30 }
31
32 EXPORT_SYMBOL(__raw_spin_lock_init);
33
34 void __rwlock_init(rwlock_t *lock, const char *name,
35 struct lock_class_key *key)
36 {
37 #ifdef CONFIG_DEBUG_LOCK_ALLOC
38 /*
39 * Make sure we are not reinitializing a held lock:
40 */
41 debug_check_no_locks_freed((void *)lock, sizeof(*lock));
42 lockdep_init_map(&lock->dep_map, name, key, 0);
43 #endif
44 lock->raw_lock = (arch_rwlock_t) __ARCH_RW_LOCK_UNLOCKED;
45 lock->magic = RWLOCK_MAGIC;
46 lock->owner = SPINLOCK_OWNER_INIT;
47 lock->owner_cpu = -1;
48 }
49
50 EXPORT_SYMBOL(__rwlock_init);
51
52 static void spin_dump(raw_spinlock_t *lockp, raw_spinlock_t lock,
53 const char *msg)
54 {
55 struct task_struct *owner = NULL;
56
57 if (lock.owner && lock.owner != SPINLOCK_OWNER_INIT)
58 owner = lock.owner;
59 printk(KERN_EMERG "BUG: spinlock %s on CPU#%d, %s/%d\n",
60 msg, raw_smp_processor_id(),
61 current->comm, task_pid_nr(current));
62 printk(KERN_EMERG " lock: %pS, .magic: %08x, .owner: %s/%d, "
63 ".owner_cpu: %d\n",
64 lockp, lock.magic,
65 owner ? owner->comm : "<none>",
66 owner ? task_pid_nr(owner) : -1,
67 lock.owner_cpu);
68 dump_stack();
69 }
70
71 static void spin_bug(raw_spinlock_t *lockp, raw_spinlock_t lock,
72 const char *msg)
73 {
74 if (!debug_locks_off())
75 return;
76
77 spin_dump(lockp, lock, msg);
78 }
79
80 #define SPIN_BUG_ON(cond, lockp, lock, msg) \
> 81 if (unlikely(cond)) spin_bug(lockp, lock, msg)
82
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
Attachment:
.config.gz
Description: application/gzip