CC: [email protected]
BCC: [email protected]
CC: [email protected]
TO: Jens Axboe <[email protected]>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux-block.git 
for-5.20/io_uring
head:   004523ebfe6de8dd664ddf6fc26c47801b3bdaf5
commit: 129ce6a148558b981c9b0c48a81a33a8c3c4c1c7 [52/171] io_uring: move rsrc 
related data, core, and commands
:::::: branch date: 9 days ago
:::::: commit date: 7 days ago
config: s390-randconfig-c043-20220717 
(https://download.01.org/0day-ci/archive/20220718/[email protected]/config)
compiler: s390-linux-gcc (GCC) 12.1.0

If you fix the issue, kindly add following tag where applicable
Reported-by: kernel test robot <[email protected]>
Reported-by: Julia Lawall <[email protected]>


cocci warnings: (new ones prefixed by >>)
>> io_uring/rsrc.c:331:6-25: atomic_dec_and_test variation before object free 
>> at line 334.

vim +331 io_uring/rsrc.c

129ce6a148558b Jens Axboe 2022-06-13  313  
129ce6a148558b Jens Axboe 2022-06-13  314  __cold static int 
io_rsrc_ref_quiesce(struct io_rsrc_data *data,
129ce6a148558b Jens Axboe 2022-06-13  315                                     
struct io_ring_ctx *ctx)
129ce6a148558b Jens Axboe 2022-06-13  316  {
129ce6a148558b Jens Axboe 2022-06-13  317       int ret;
129ce6a148558b Jens Axboe 2022-06-13  318  
129ce6a148558b Jens Axboe 2022-06-13  319       /* As we may drop ->uring_lock, 
other task may have started quiesce */
129ce6a148558b Jens Axboe 2022-06-13  320       if (data->quiesce)
129ce6a148558b Jens Axboe 2022-06-13  321               return -ENXIO;
129ce6a148558b Jens Axboe 2022-06-13  322  
129ce6a148558b Jens Axboe 2022-06-13  323       data->quiesce = true;
129ce6a148558b Jens Axboe 2022-06-13  324       do {
129ce6a148558b Jens Axboe 2022-06-13  325               ret = 
io_rsrc_node_switch_start(ctx);
129ce6a148558b Jens Axboe 2022-06-13  326               if (ret)
129ce6a148558b Jens Axboe 2022-06-13  327                       break;
129ce6a148558b Jens Axboe 2022-06-13  328               
io_rsrc_node_switch(ctx, data);
129ce6a148558b Jens Axboe 2022-06-13  329  
129ce6a148558b Jens Axboe 2022-06-13  330               /* kill initial ref, 
already quiesced if zero */
129ce6a148558b Jens Axboe 2022-06-13 @331               if 
(atomic_dec_and_test(&data->refs))
129ce6a148558b Jens Axboe 2022-06-13  332                       break;
129ce6a148558b Jens Axboe 2022-06-13  333               
mutex_unlock(&ctx->uring_lock);
129ce6a148558b Jens Axboe 2022-06-13 @334               
flush_delayed_work(&ctx->rsrc_put_work);
129ce6a148558b Jens Axboe 2022-06-13  335               ret = 
wait_for_completion_interruptible(&data->done);
129ce6a148558b Jens Axboe 2022-06-13  336               if (!ret) {
129ce6a148558b Jens Axboe 2022-06-13  337                       
mutex_lock(&ctx->uring_lock);
129ce6a148558b Jens Axboe 2022-06-13  338                       if 
(atomic_read(&data->refs) > 0) {
129ce6a148558b Jens Axboe 2022-06-13  339                               /*
129ce6a148558b Jens Axboe 2022-06-13  340                                * it 
has been revived by another thread while
129ce6a148558b Jens Axboe 2022-06-13  341                                * we 
were unlocked
129ce6a148558b Jens Axboe 2022-06-13  342                                */
129ce6a148558b Jens Axboe 2022-06-13  343                               
mutex_unlock(&ctx->uring_lock);
129ce6a148558b Jens Axboe 2022-06-13  344                       } else {
129ce6a148558b Jens Axboe 2022-06-13  345                               break;
129ce6a148558b Jens Axboe 2022-06-13  346                       }
129ce6a148558b Jens Axboe 2022-06-13  347               }
129ce6a148558b Jens Axboe 2022-06-13  348  
129ce6a148558b Jens Axboe 2022-06-13  349               atomic_inc(&data->refs);
129ce6a148558b Jens Axboe 2022-06-13  350               /* wait for all works 
potentially completing data->done */
129ce6a148558b Jens Axboe 2022-06-13  351               
flush_delayed_work(&ctx->rsrc_put_work);
129ce6a148558b Jens Axboe 2022-06-13  352               
reinit_completion(&data->done);
129ce6a148558b Jens Axboe 2022-06-13  353  
129ce6a148558b Jens Axboe 2022-06-13  354               ret = 
io_run_task_work_sig();
129ce6a148558b Jens Axboe 2022-06-13  355               
mutex_lock(&ctx->uring_lock);
129ce6a148558b Jens Axboe 2022-06-13  356       } while (ret >= 0);
129ce6a148558b Jens Axboe 2022-06-13  357       data->quiesce = false;
129ce6a148558b Jens Axboe 2022-06-13  358  
129ce6a148558b Jens Axboe 2022-06-13  359       return ret;
129ce6a148558b Jens Axboe 2022-06-13  360  }
129ce6a148558b Jens Axboe 2022-06-13  361  

-- 
0-DAY CI Kernel Test Service
https://01.org/lkp
_______________________________________________
kbuild mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to