Hi Linlin,

kernel test robot noticed the following build warnings:

[auto build test WARNING on axboe/for-next]
[also build test WARNING on mst-vhost/linux-next linus/master v7.3-rc6 
next-20261008]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    
https://github.com/intel-lab-lkp/linux/commits/Linlin-Zhang/virtio_blk-Add-control-virtqueue-support/20261008-211713
base:   https://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux.git for-next
patch link:    
https://lore.kernel.org/r/20261009041727.3170811-2-linlin.zhang%40oss.qualcomm.com
patch subject: [PATCH v4 1/2] virtio_blk: Add control virtqueue support
config: x86_64-defconfig 
(https://download.01.org/0day-ci/archive/20261010/[email protected]/config)
compiler: gcc-14 (Debian 14.2.0-19) 14.2.0
reproduce (this is a W=1 build): 
(https://download.01.org/0day-ci/archive/20261010/[email protected]/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <[email protected]>
| Closes: 
https://lore.kernel.org/oe-kbuild-all/[email protected]/

All warnings (new ones prefixed by >>):

>> drivers/block/virtio_blk.c:1000:12: warning: 'virtblk_ctrl_vq_request' 
>> defined but not used [-Wunused-function]
    1000 | static int virtblk_ctrl_vq_request(struct virtio_blk *vblk,
         |            ^~~~~~~~~~~~~~~~~~~~~~~


vim +/virtblk_ctrl_vq_request +1000 drivers/block/virtio_blk.c

   998  
   999  /* Submit a control-queue request and wait for completion. */
> 1000  static int virtblk_ctrl_vq_request(struct virtio_blk *vblk,
  1001                                      struct virtblk_ctrl_request *creq,
  1002                                      struct scatterlist *sgs[],
  1003                                      unsigned int out_sgs, unsigned int 
in_sgs)
  1004  {
  1005          struct virtblk_ctrl_completion *comp;
  1006          unsigned long flags;
  1007          int err;
  1008  
  1009          /*
  1010           * GFP_NOIO: this may be reached on the bio-submission path
  1011           * (memory reclaim writing back dirty pages to this same 
device),
  1012           * so GFP_KERNEL could self-deadlock.
  1013           */
  1014          comp = kmalloc_obj(*comp, GFP_NOIO);
  1015          if (!comp)
  1016                  return -ENOMEM;
  1017          init_completion(&comp->done);
  1018          comp->abandoned = false;
  1019  
  1020          mutex_lock(&vblk->ctrl_vq.mutex);
  1021          creq->compl = comp;
  1022  
  1023          spin_lock_irqsave(&vblk->ctrl_vq.lock, flags);
  1024          if (vblk->ctrl_vq.dead) {
  1025                  spin_unlock_irqrestore(&vblk->ctrl_vq.lock, flags);
  1026                  mutex_unlock(&vblk->ctrl_vq.mutex);
  1027                  kfree(comp);
  1028                  creq->compl = NULL;
  1029                  return -ENODEV;
  1030          }
  1031          err = virtqueue_add_sgs(vblk->ctrl_vq.vq, sgs, out_sgs, in_sgs, 
creq, GFP_ATOMIC);
  1032          if (!err) {
  1033                  vblk->ctrl_vq.inflight++;
  1034                  virtqueue_kick(vblk->ctrl_vq.vq);
  1035          }
  1036          spin_unlock_irqrestore(&vblk->ctrl_vq.lock, flags);
  1037          if (err) {
  1038                  mutex_unlock(&vblk->ctrl_vq.mutex);
  1039                  kfree(comp);
  1040                  creq->compl = NULL;
  1041                  return err;
  1042          }
  1043  
  1044          if (wait_for_completion_timeout(&comp->done, 
VIRTBLK_CTRL_VQ_TIMEOUT)) {
  1045                  mutex_unlock(&vblk->ctrl_vq.mutex);
  1046                  kfree(comp);
  1047                  creq->compl = NULL;
  1048                  return 0;
  1049          }
  1050  
  1051          /*
  1052           * The host hasn't responded within the timeout. @creq is still
  1053           * owned by the device, so don't touch its DMA-target fields or
  1054           * free it here. Mark it abandoned and hand ownership of both 
@creq
  1055           * and @comp to whichever of virtblk_ctrlq_callback() or
  1056           * virtblk_ctrl_vq_drain() retrieves the buffer later; unlock 
the
  1057           * mutex so subsequent requests aren't serialized behind an
  1058           * unresponsive host.
  1059           */
  1060          spin_lock_irqsave(&vblk->ctrl_vq.lock, flags);
  1061          comp->abandoned = true;
  1062          spin_unlock_irqrestore(&vblk->ctrl_vq.lock, flags);
  1063          mutex_unlock(&vblk->ctrl_vq.mutex);
  1064  
  1065          dev_warn(&vblk->vdev->dev,
  1066                   "control queue request timed out, abandoning\n");
  1067          return -ETIMEDOUT;
  1068  }
  1069  

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

Reply via email to