]> git.baikalelectronics.ru Git - kernel.git/commit
vhost scsi: fix cmd completion race
authorMike Christie <michael.christie@oracle.com>
Tue, 10 Nov 2020 05:33:21 +0000 (23:33 -0600)
committerMichael S. Tsirkin <mst@redhat.com>
Sun, 15 Nov 2020 22:30:55 +0000 (17:30 -0500)
commitda69fe43dbb08807adc0cfd80c7bbf2189e66ef9
tree303de8739ecd28a81ac9bacac217afd6a9767c83
parent6be5cb097bfcc76c4ff3c2a0eecc77ec4b438632
vhost scsi: fix cmd completion race

We might not do the final se_cmd put from vhost_scsi_complete_cmd_work.
When the last put happens a little later then we could race where
vhost_scsi_complete_cmd_work does vhost_signal, the guest runs and sends
more IO, and vhost_scsi_handle_vq runs but does not find any free cmds.

This patch has us delay completing the cmd until the last lio core ref
is dropped. We then know that once we signal to the guest that the cmd
is completed that if it queues a new command it will find a free cmd.

Signed-off-by: Mike Christie <michael.christie@oracle.com>
Reviewed-by: Maurizio Lombardi <mlombard@redhat.com>
Link: https://lore.kernel.org/r/1604986403-4931-4-git-send-email-michael.christie@oracle.com
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Acked-by: Stefan Hajnoczi <stefanha@redhat.com>
drivers/vhost/scsi.c