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 PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Wed, 2 Sep 2020 08:07:28 +0000 From: "Xia, Hui" <hui.xia@...el.com> To: Leo Yan <leo.yan@...aro.org>, lkp <lkp@...el.com> CC: "kbuild-all@...ts.01.org" <kbuild-all@...ts.01.org>, "linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>, "Greg Kroah-Hartman" <gregkh@...uxfoundation.org>, Jeffrey Hugo <jeffrey.l.hugo@...il.com> Subject: RE: [kbuild-all] Re: include/asm-generic/qspinlock.h:94:9: sparse: sparse: context imbalance in '__msm_console_write' - unexpected unlock >-----Original Message----- >From: Leo Yan <leo.yan@...aro.org> >Sent: 2020年8月31日 8:47 >To: lkp <lkp@...el.com> >Cc: kbuild-all@...ts.01.org; linux-kernel@...r.kernel.org; Greg Kroah-Hartman ><gregkh@...uxfoundation.org>; Jeffrey Hugo <jeffrey.l.hugo@...il.com> >Subject: [kbuild-all] Re: include/asm-generic/qspinlock.h:94:9: sparse: sparse: >context imbalance in '__msm_console_write' - unexpected unlock > >Hi, > >On Sat, Aug 29, 2020 at 08:27:03AM +0800, kernel test robot wrote: >> tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master >> head: 005c53447a63cbce10de37406975a34d7bdc8704 >> commit: 0e4f7f920a5c6bfe5e851e989f27b35a0cc7fb7e tty: serial: msm_serial: >Fix lockup for sysrq and oops >> date: 9 months ago >> config: arm64-randconfig-s031-20200829 (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-191-g10164920-dirty >> git checkout 0e4f7f920a5c6bfe5e851e989f27b35a0cc7fb7e >> # 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@...el.com> >> >> >> sparse warnings: (new ones prefixed by >>) >> >> drivers/tty/serial/msm_serial.c:736:25: sparse: sparse: context imbalance in >'msm_handle_rx_dm' - unexpected unlock >> drivers/tty/serial/msm_serial.c:802:28: sparse: sparse: context imbalance in >'msm_handle_rx' - unexpected unlock >> drivers/tty/serial/msm_serial.c:1100:12: sparse: sparse: context imbalance in >'msm_set_baud_rate' - unexpected unlock >> drivers/tty/serial/msm_serial.c: note: in included file (through >arch/arm64/include/generated/asm/qspinlock.h, >arch/arm64/include/asm/spinlock.h, include/linux/spinlock.h, ...): >> >> include/asm-generic/qspinlock.h:94:9: sparse: sparse: context >> >> imbalance in '__msm_console_write' - unexpected unlock > >I think this is a false positive report. Let's see the locking relevant code in >__msm_console_write(): Hi Yan, Thanks for the clarification. Please ignore this report. It was sent out unexpected. We will fix the robot bug soon. Best Regards, Hui > > __msm_console_write() { > > int locked = 1; > > [...] > > if (port->sysrq) > locked = 0; > else if (oops_in_progress) > locked = spin_trylock(&port->lock); > else > spin_lock(&port->lock); > > [...] > > if (locked) > spin_unlock(&port->lock); > } > >Since we need to handle oops and sysrq as special cases, it uses 'locked' to >indicate the spinlock has been acquired and later will release spinlock if 'locked' is >true. So locking and unlocking are paired and I don't see what's the reason the >robot reports the context imbalance. > >BTW, this report is not only for msm_serial driver, it also might be applied to >many other serial drivers, e.g. > > drivers/tty/serial/amba-pl011.c > drivers/tty/serial/xilinx_uartps.c > drivers/tty/serial/stm32-usart.c > >Maybe I miss something at here, if so please let me know. > >Thanks, >Leo > >> # >> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/com >> mit/?id=0e4f7f920a5c6bfe5e851e989f27b35a0cc7fb7e >> git remote add linus >> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git >> git fetch --no-tags linus master >> git checkout 0e4f7f920a5c6bfe5e851e989f27b35a0cc7fb7e >> vim +/__msm_console_write +94 include/asm-generic/qspinlock.h >> >> a33fda35e3a765 Waiman Long 2015-04-24 83 >> a33fda35e3a765 Waiman Long 2015-04-24 84 #ifndef queued_spin_unlock >> a33fda35e3a765 Waiman Long 2015-04-24 85 /** >> a33fda35e3a765 Waiman Long 2015-04-24 86 * queued_spin_unlock - release >a queued spinlock >> a33fda35e3a765 Waiman Long 2015-04-24 87 * @lock : Pointer to queued >spinlock structure >> a33fda35e3a765 Waiman Long 2015-04-24 88 */ >> a33fda35e3a765 Waiman Long 2015-04-24 89 static __always_inline void >> queued_spin_unlock(struct qspinlock *lock) >> a33fda35e3a765 Waiman Long 2015-04-24 90 { >> a33fda35e3a765 Waiman Long 2015-04-24 91 /* >> ca50e426f96c90 Pan Xinhui 2016-06-03 92 * unlock() needs release >semantics: >> a33fda35e3a765 Waiman Long 2015-04-24 93 */ >> 626e5fbc143589 Will Deacon 2018-04-26 @94 > smp_store_release(&lock->locked, 0); >> a33fda35e3a765 Waiman Long 2015-04-24 95 } >> a33fda35e3a765 Waiman Long 2015-04-24 96 #endif >> a33fda35e3a765 Waiman Long 2015-04-24 97 >> >> :::::: The code at line 94 was first introduced by commit >> :::::: 626e5fbc14358901ddaa90ce510e0fbeab310432 locking/qspinlock: Use >> smp_store_release() in queued_spin_unlock() >> >> :::::: TO: Will Deacon <will.deacon@....com> >> :::::: CC: Ingo Molnar <mingo@...nel.org> >> >> --- >> 0-DAY CI Kernel Test Service, Intel Corporation >> https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org > >_______________________________________________ >kbuild-all mailing list -- kbuild-all@...ts.01.org To unsubscribe send an email to >kbuild-all-leave@...ts.01.org
Powered by blists - more mailing lists