Re: [PATCH 3.11-stable] virtio_scsi: verify if queue is broken after virtqueue_get_buf()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Jonghwan Choi <jhbird.choi@xxxxxxxxxxx> writes:
> This patch looks like it should be in the 3.11-stable tree, should we apply
> it?

No.  We've had the issue that broken devices can do bad things since
2008.  But we've not hit any reports in the field, that I am aware of.

Cheers,
Rusty.
>
> ------------------
>
> From: "Heinz Graalfs <graalfs@xxxxxxxxxxxxxxxxxx>"
>
> commit 2bf4fd31394a3f875ea093ee8a209f30b378cbf3 upstream
>
> If virtqueue_get_buf() returned with a NULL pointer avoid a possibly
> endless loop by checking for a broken virtqueue.
>
> Signed-off-by: Heinz Graalfs <graalfs@xxxxxxxxxxxxxxxxxx>
> Signed-off-by: Rusty Russell <rusty@xxxxxxxxxxxxxxx>
> Signed-off-by: Jonghwan Choi <jhbird.choi@xxxxxxxxxxx>
> ---
>  drivers/scsi/virtio_scsi.c |    3 +++
>  1 file changed, 3 insertions(+)
>
> diff --git a/drivers/scsi/virtio_scsi.c b/drivers/scsi/virtio_scsi.c
> index 74b88ef..aa25aab 100644
> --- a/drivers/scsi/virtio_scsi.c
> +++ b/drivers/scsi/virtio_scsi.c
> @@ -224,6 +224,9 @@ static void virtscsi_vq_done(struct virtio_scsi *vscsi,
>  		virtqueue_disable_cb(vq);
>  		while ((buf = virtqueue_get_buf(vq, &len)) != NULL)
>  			fn(vscsi, buf);
> +
> +		if (unlikely(virtqueue_is_broken(vq)))
> +			break;
>  	} while (!virtqueue_enable_cb(vq));
>  	spin_unlock_irqrestore(&virtscsi_vq->vq_lock, flags);
>  }
> -- 
> 1.7.9.5
--
To unsubscribe from this list: send the line "unsubscribe stable" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]