lkml.org 
[lkml]   [2014]   [Aug]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 3.13 035/259] virtio-scsi: avoid cancelling uninitialized work items
    Date
    3.13.11.6 -stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Paolo Bonzini <pbonzini@redhat.com>

    commit cdda0e5acbb78f7b777049f8c27899e5c5bb368f upstream.

    Calling the workqueue interface on uninitialized work items isn't a
    good idea even if they're zeroed. It's not failing catastrophically only
    through happy accidents.

    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Kamal Mostafa <kamal@canonical.com>
    ---
    drivers/scsi/virtio_scsi.c | 4 +++-
    1 file changed, 3 insertions(+), 1 deletion(-)

    diff --git a/drivers/scsi/virtio_scsi.c b/drivers/scsi/virtio_scsi.c
    index db3b494..a91a135 100644
    --- a/drivers/scsi/virtio_scsi.c
    +++ b/drivers/scsi/virtio_scsi.c
    @@ -291,6 +291,8 @@ static void virtscsi_ctrl_done(struct virtqueue *vq)
    virtscsi_vq_done(vscsi, &vscsi->ctrl_vq, virtscsi_complete_free);
    };

    +static void virtscsi_handle_event(struct work_struct *work);
    +
    static int virtscsi_kick_event(struct virtio_scsi *vscsi,
    struct virtio_scsi_event_node *event_node)
    {
    @@ -298,6 +300,7 @@ static int virtscsi_kick_event(struct virtio_scsi *vscsi,
    struct scatterlist sg;
    unsigned long flags;

    + INIT_WORK(&event_node->work, virtscsi_handle_event);
    sg_init_one(&sg, &event_node->event, sizeof(struct virtio_scsi_event));

    spin_lock_irqsave(&vscsi->event_vq.vq_lock, flags);
    @@ -415,7 +418,6 @@ static void virtscsi_complete_event(struct virtio_scsi *vscsi, void *buf)
    {
    struct virtio_scsi_event_node *event_node = buf;

    - INIT_WORK(&event_node->work, virtscsi_handle_event);
    schedule_work(&event_node->work);
    }

    --
    1.9.1


    \
     
     \ /
      Last update: 2014-08-09 00:41    [W:4.092 / U:0.168 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site