CC: [email protected]
CC: [email protected]
TO: Andy Shevchenko <[email protected]>
CC: Andrew Morton <[email protected]>
CC: Linux Memory Management List <[email protected]>
CC: Cezary Rojewski <[email protected]>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 
master
head:   a96bfed64c8986d6404e553f18203cae1f5ac7e6
commit: e130816164e244b692921de49771eeb28205152d include/linux/list.h: add a 
macro to test if entry is pointing to the head
date:   8 months ago
:::::: branch date: 7 hours ago
:::::: commit date: 8 months ago
config: ia64-randconfig-s032-20210622 (attached as .config)
compiler: ia64-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.3-341-g8af24329-dirty
        # 
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=e130816164e244b692921de49771eeb28205152d
        git remote add linus 
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
        git fetch --no-tags linus master
        git checkout e130816164e244b692921de49771eeb28205152d
        # 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__' W=1 ARCH=ia64 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <[email protected]>


sparse warnings: (new ones prefixed by >>)
>> drivers/dma/nbpfaxi.c:1122:27: sparse: sparse: context imbalance in 
>> 'nbpf_chan_tasklet' - different lock contexts for basic block

vim +/nbpf_chan_tasklet +1122 drivers/dma/nbpfaxi.c

b45b262cefd5b8 Guennadi Liakhovetski 2014-07-19  1115  
bbc61540058a95 Allen Pais            2020-08-31  1116  static void 
nbpf_chan_tasklet(struct tasklet_struct *t)
b45b262cefd5b8 Guennadi Liakhovetski 2014-07-19  1117  {
bbc61540058a95 Allen Pais            2020-08-31  1118   struct nbpf_channel 
*chan = from_tasklet(chan, t, tasklet);
b45b262cefd5b8 Guennadi Liakhovetski 2014-07-19  1119   struct nbpf_desc *desc, 
*tmp;
0024b2ac374490 Dave Jiang            2016-07-20  1120   struct 
dmaengine_desc_callback cb;
b45b262cefd5b8 Guennadi Liakhovetski 2014-07-19  1121  
b45b262cefd5b8 Guennadi Liakhovetski 2014-07-19 @1122   while 
(!list_empty(&chan->done)) {
b45b262cefd5b8 Guennadi Liakhovetski 2014-07-19  1123           bool found = 
false, must_put, recycling = false;
b45b262cefd5b8 Guennadi Liakhovetski 2014-07-19  1124  
b45b262cefd5b8 Guennadi Liakhovetski 2014-07-19  1125           
spin_lock_irq(&chan->lock);
b45b262cefd5b8 Guennadi Liakhovetski 2014-07-19  1126  
b45b262cefd5b8 Guennadi Liakhovetski 2014-07-19  1127           
list_for_each_entry_safe(desc, tmp, &chan->done, node) {
b45b262cefd5b8 Guennadi Liakhovetski 2014-07-19  1128                   if 
(!desc->user_wait) {
b45b262cefd5b8 Guennadi Liakhovetski 2014-07-19  1129                           
/* Newly completed descriptor, have to process */
b45b262cefd5b8 Guennadi Liakhovetski 2014-07-19  1130                           
found = true;
b45b262cefd5b8 Guennadi Liakhovetski 2014-07-19  1131                           
break;
b45b262cefd5b8 Guennadi Liakhovetski 2014-07-19  1132                   } else 
if (async_tx_test_ack(&desc->async_tx)) {
b45b262cefd5b8 Guennadi Liakhovetski 2014-07-19  1133                           
/*
b45b262cefd5b8 Guennadi Liakhovetski 2014-07-19  1134                           
 * This descriptor was waiting for a user ACK,
b45b262cefd5b8 Guennadi Liakhovetski 2014-07-19  1135                           
 * it can be recycled now.
b45b262cefd5b8 Guennadi Liakhovetski 2014-07-19  1136                           
 */
b45b262cefd5b8 Guennadi Liakhovetski 2014-07-19  1137                           
list_del(&desc->node);
b45b262cefd5b8 Guennadi Liakhovetski 2014-07-19  1138                           
spin_unlock_irq(&chan->lock);
b45b262cefd5b8 Guennadi Liakhovetski 2014-07-19  1139                           
nbpf_desc_put(desc);
b45b262cefd5b8 Guennadi Liakhovetski 2014-07-19  1140                           
recycling = true;
b45b262cefd5b8 Guennadi Liakhovetski 2014-07-19  1141                           
break;
b45b262cefd5b8 Guennadi Liakhovetski 2014-07-19  1142                   }
b45b262cefd5b8 Guennadi Liakhovetski 2014-07-19  1143           }
b45b262cefd5b8 Guennadi Liakhovetski 2014-07-19  1144  
b45b262cefd5b8 Guennadi Liakhovetski 2014-07-19  1145           if (recycling)
b45b262cefd5b8 Guennadi Liakhovetski 2014-07-19  1146                   
continue;
b45b262cefd5b8 Guennadi Liakhovetski 2014-07-19  1147  
b45b262cefd5b8 Guennadi Liakhovetski 2014-07-19  1148           if (!found) {
b45b262cefd5b8 Guennadi Liakhovetski 2014-07-19  1149                   /* This 
can happen if TERMINATE_ALL has been called */
b45b262cefd5b8 Guennadi Liakhovetski 2014-07-19  1150                   
spin_unlock_irq(&chan->lock);
b45b262cefd5b8 Guennadi Liakhovetski 2014-07-19  1151                   break;
b45b262cefd5b8 Guennadi Liakhovetski 2014-07-19  1152           }
b45b262cefd5b8 Guennadi Liakhovetski 2014-07-19  1153  
b45b262cefd5b8 Guennadi Liakhovetski 2014-07-19  1154           
dma_cookie_complete(&desc->async_tx);
b45b262cefd5b8 Guennadi Liakhovetski 2014-07-19  1155  
b45b262cefd5b8 Guennadi Liakhovetski 2014-07-19  1156           /*
b45b262cefd5b8 Guennadi Liakhovetski 2014-07-19  1157            * With 
released lock we cannot dereference desc, maybe it's
b45b262cefd5b8 Guennadi Liakhovetski 2014-07-19  1158            * still on the 
"done" list
b45b262cefd5b8 Guennadi Liakhovetski 2014-07-19  1159            */
b45b262cefd5b8 Guennadi Liakhovetski 2014-07-19  1160           if 
(async_tx_test_ack(&desc->async_tx)) {
b45b262cefd5b8 Guennadi Liakhovetski 2014-07-19  1161                   
list_del(&desc->node);
b45b262cefd5b8 Guennadi Liakhovetski 2014-07-19  1162                   
must_put = true;
b45b262cefd5b8 Guennadi Liakhovetski 2014-07-19  1163           } else {
b45b262cefd5b8 Guennadi Liakhovetski 2014-07-19  1164                   
desc->user_wait = true;
b45b262cefd5b8 Guennadi Liakhovetski 2014-07-19  1165                   
must_put = false;
b45b262cefd5b8 Guennadi Liakhovetski 2014-07-19  1166           }
b45b262cefd5b8 Guennadi Liakhovetski 2014-07-19  1167  
0024b2ac374490 Dave Jiang            2016-07-20  1168           
dmaengine_desc_get_callback(&desc->async_tx, &cb);
b45b262cefd5b8 Guennadi Liakhovetski 2014-07-19  1169  
b45b262cefd5b8 Guennadi Liakhovetski 2014-07-19  1170           /* ack and 
callback completed descriptor */
b45b262cefd5b8 Guennadi Liakhovetski 2014-07-19  1171           
spin_unlock_irq(&chan->lock);
b45b262cefd5b8 Guennadi Liakhovetski 2014-07-19  1172  
0024b2ac374490 Dave Jiang            2016-07-20  1173           
dmaengine_desc_callback_invoke(&cb, NULL);
b45b262cefd5b8 Guennadi Liakhovetski 2014-07-19  1174  
b45b262cefd5b8 Guennadi Liakhovetski 2014-07-19  1175           if (must_put)
b45b262cefd5b8 Guennadi Liakhovetski 2014-07-19  1176                   
nbpf_desc_put(desc);
b45b262cefd5b8 Guennadi Liakhovetski 2014-07-19  1177   }
b45b262cefd5b8 Guennadi Liakhovetski 2014-07-19  1178  }
b45b262cefd5b8 Guennadi Liakhovetski 2014-07-19  1179  

:::::: The code at line 1122 was first introduced by commit
:::::: b45b262cefd5b8eb2ba88d20e5bd295881293894 dmaengine: add a driver for 
AMBA AXI NBPF DMAC IP cores

:::::: TO: Guennadi Liakhovetski <[email protected]>
:::::: CC: Vinod Koul <[email protected]>

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/[email protected]

Attachment: .config.gz
Description: application/gzip

_______________________________________________
kbuild mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to