include/linux/spinlock_api_smp.h:104:29: sparse: sparse: context imbalance in 'vpe_to_cpuid_lock' - wrong count at exit

From: kernel test robot
Date: Tue Aug 11 2020 - 04:29:56 EST


tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 00e4db51259a5f936fec1424b884f029479d3981
commit: f3a059219bc718ccc3bf3ff894f089b7e9a93139 irqchip/gic-v4.1: Ensure mutual exclusion between vPE affinity change and RD access
date: 5 months ago
config: arm64-randconfig-s032-20200811 (attached as .config)
compiler: aarch64-linux-gcc (GCC) 9.3.0
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# apt-get install sparse
# sparse version: v0.6.2-168-g9554805c-dirty
git checkout f3a059219bc718ccc3bf3ff894f089b7e9a93139
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=arm64

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@xxxxxxxxx>


sparse warnings: (new ones prefixed by >>)

drivers/irqchip/irq-gic-v3-its.c: note: in included file (through include/linux/spinlock.h, include/linux/radix-tree.h, include/linux/idr.h, ...):
>> include/linux/spinlock_api_smp.h:104:29: sparse: sparse: context imbalance in 'vpe_to_cpuid_lock' - wrong count at exit
drivers/irqchip/irq-gic-v3-its.c:248:13: sparse: sparse: context imbalance in 'vpe_to_cpuid_unlock' - unexpected unlock

vim +/vpe_to_cpuid_lock +104 include/linux/spinlock_api_smp.h

69d0ee7377eef8 Heiko Carstens 2009-08-31 103
9c1721aa4994f6 Thomas Gleixner 2009-12-03 @104 static inline unsigned long __raw_spin_lock_irqsave(raw_spinlock_t *lock)
69d0ee7377eef8 Heiko Carstens 2009-08-31 105 {
69d0ee7377eef8 Heiko Carstens 2009-08-31 106 unsigned long flags;
69d0ee7377eef8 Heiko Carstens 2009-08-31 107
69d0ee7377eef8 Heiko Carstens 2009-08-31 108 local_irq_save(flags);
69d0ee7377eef8 Heiko Carstens 2009-08-31 109 preempt_disable();
69d0ee7377eef8 Heiko Carstens 2009-08-31 110 spin_acquire(&lock->dep_map, 0, 0, _RET_IP_);
69d0ee7377eef8 Heiko Carstens 2009-08-31 111 /*
69d0ee7377eef8 Heiko Carstens 2009-08-31 112 * On lockdep we dont want the hand-coded irq-enable of
9828ea9d75c38f Thomas Gleixner 2009-12-03 113 * do_raw_spin_lock_flags() code, because lockdep assumes
69d0ee7377eef8 Heiko Carstens 2009-08-31 114 * that interrupts are not re-enabled during lock-acquire:
69d0ee7377eef8 Heiko Carstens 2009-08-31 115 */
69d0ee7377eef8 Heiko Carstens 2009-08-31 116 #ifdef CONFIG_LOCKDEP
9828ea9d75c38f Thomas Gleixner 2009-12-03 117 LOCK_CONTENDED(lock, do_raw_spin_trylock, do_raw_spin_lock);
69d0ee7377eef8 Heiko Carstens 2009-08-31 118 #else
9828ea9d75c38f Thomas Gleixner 2009-12-03 119 do_raw_spin_lock_flags(lock, &flags);
69d0ee7377eef8 Heiko Carstens 2009-08-31 120 #endif
69d0ee7377eef8 Heiko Carstens 2009-08-31 121 return flags;
69d0ee7377eef8 Heiko Carstens 2009-08-31 122 }
69d0ee7377eef8 Heiko Carstens 2009-08-31 123

:::::: The code at line 104 was first introduced by commit
:::::: 9c1721aa4994f6625decbd915241f3a94ee2fe67 locking: Cleanup the name space completely

:::::: TO: Thomas Gleixner <tglx@xxxxxxxxxxxxx>
:::::: CC: Thomas Gleixner <tglx@xxxxxxxxxxxxx>

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@xxxxxxxxxxxx

Attachment: .config.gz
Description: application/gzip