include/vdso/helpers.h:37:9: sparse: sparse: context imbalance in 'vdso_update_begin' - wrong count at exit
From: kernel test robot
Date: Tue Aug 18 2020 - 19:12:11 EST
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 06a4ec1d9dc652e17ee3ac2ceb6c7cf6c2b75cdd
commit: 19d0070a2792181f79df01277fe00b83b9f7eda7 timekeeping/vsyscall: Provide vdso_update_begin/end()
date: 13 days ago
config: arm64-randconfig-s031-20200818 (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-183-gaa6ede3b-dirty
git checkout 19d0070a2792181f79df01277fe00b83b9f7eda7
# 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 >>)
kernel/time/vsyscall.c: note: in included file:
>> include/vdso/helpers.h:37:9: sparse: sparse: context imbalance in 'vdso_update_begin' - wrong count at exit
kernel/time/vsyscall.c:163:6: sparse: sparse: context imbalance in 'vdso_update_end' - unexpected unlock
# https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=19d0070a2792181f79df01277fe00b83b9f7eda7
git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
git fetch --no-tags linus master
git checkout 19d0070a2792181f79df01277fe00b83b9f7eda7
vim +/vdso_update_begin +37 include/vdso/helpers.h
00b26474c2f161 Vincenzo Frascino 2019-06-21 29
00b26474c2f161 Vincenzo Frascino 2019-06-21 30 static __always_inline void vdso_write_begin(struct vdso_data *vd)
00b26474c2f161 Vincenzo Frascino 2019-06-21 31 {
00b26474c2f161 Vincenzo Frascino 2019-06-21 32 /*
00b26474c2f161 Vincenzo Frascino 2019-06-21 33 * WRITE_ONCE it is required otherwise the compiler can validly tear
00b26474c2f161 Vincenzo Frascino 2019-06-21 34 * updates to vd[x].seq and it is possible that the value seen by the
00b26474c2f161 Vincenzo Frascino 2019-06-21 35 * reader it is inconsistent.
00b26474c2f161 Vincenzo Frascino 2019-06-21 36 */
00b26474c2f161 Vincenzo Frascino 2019-06-21 @37 WRITE_ONCE(vd[CS_HRES_COARSE].seq, vd[CS_HRES_COARSE].seq + 1);
00b26474c2f161 Vincenzo Frascino 2019-06-21 38 WRITE_ONCE(vd[CS_RAW].seq, vd[CS_RAW].seq + 1);
00b26474c2f161 Vincenzo Frascino 2019-06-21 39 smp_wmb();
00b26474c2f161 Vincenzo Frascino 2019-06-21 40 }
00b26474c2f161 Vincenzo Frascino 2019-06-21 41
:::::: The code at line 37 was first introduced by commit
:::::: 00b26474c2f1613d7ab894c525f775c67c8a9e8f lib/vdso: Provide generic VDSO implementation
:::::: TO: Vincenzo Frascino <vincenzo.frascino@xxxxxxx>
:::::: 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