lkml.org 
[lkml]   [2014]   [Jul]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 3.11 066/128] virtio-scsi: avoid cancelling uninitialized work items
    Date
    3.11.10.14 -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: Luis Henriques <luis.henriques@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 95a5d73e675c..57c39e1e6681 100644
    --- a/drivers/scsi/virtio_scsi.c
    +++ b/drivers/scsi/virtio_scsi.c
    @@ -288,6 +288,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)
    {
    @@ -295,6 +297,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);
    @@ -412,7 +415,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-07-25 02:41    [W:5.250 / U:0.008 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site