2014-02-24 22:13:39

by Venkatesh Srinivas

[permalink] [raw]
Subject: [PATCH] vhost/scsi: Check LUN structure byte 0 is set to 1, per spec

The virtio spec requires byte 0 of the virtio-scsi LUN structure
to be '1'.

Signed-off-by: Venkatesh Srinivas <[email protected]>
---
drivers/vhost/scsi.c | 6 ++++++
1 file changed, 6 insertions(+)

diff --git a/drivers/vhost/scsi.c b/drivers/vhost/scsi.c
index 0a025b8..e48d4a6 100644
--- a/drivers/vhost/scsi.c
+++ b/drivers/vhost/scsi.c
@@ -1001,6 +1001,12 @@ vhost_scsi_handle_vq(struct vhost_scsi *vs, struct vhost_virtqueue *vq)
break;
}

+ /* virtio-scsi spec requires byte 0 of the lun to be 1 */
+ if (unlikely(v_req.lun[0] != 1)) {
+ vhost_scsi_send_bad_target(vs, vq, head, out);
+ continue;
+ }
+
/* Extract the tpgt */
target = v_req.lun[1];
tpg = ACCESS_ONCE(vs_tpg[target]);
--
1.8.5.3


2014-02-24 22:27:43

by Paolo Bonzini

[permalink] [raw]
Subject: Re: [PATCH] vhost/scsi: Check LUN structure byte 0 is set to 1, per spec

> The virtio spec requires byte 0 of the virtio-scsi LUN structure
> to be '1'.
>
> Signed-off-by: Venkatesh Srinivas <[email protected]>
> ---
> drivers/vhost/scsi.c | 6 ++++++
> 1 file changed, 6 insertions(+)
>
> diff --git a/drivers/vhost/scsi.c b/drivers/vhost/scsi.c
> index 0a025b8..e48d4a6 100644
> --- a/drivers/vhost/scsi.c
> +++ b/drivers/vhost/scsi.c
> @@ -1001,6 +1001,12 @@ vhost_scsi_handle_vq(struct vhost_scsi *vs, struct
> vhost_virtqueue *vq)
> break;
> }
>
> + /* virtio-scsi spec requires byte 0 of the lun to be 1 */
> + if (unlikely(v_req.lun[0] != 1)) {
> + vhost_scsi_send_bad_target(vs, vq, head, out);
> + continue;
> + }
> +
> /* Extract the tpgt */
> target = v_req.lun[1];
> tpg = ACCESS_ONCE(vs_tpg[target]);
> --
> 1.8.5.3
>

Reviewed-by: Paolo Bonzini <[email protected]>

2014-02-25 00:13:35

by Nicholas A. Bellinger

[permalink] [raw]
Subject: Re: [PATCH] vhost/scsi: Check LUN structure byte 0 is set to 1, per spec

Hi Venkatesh,

On Mon, 2014-02-24 at 14:13 -0800, Venkatesh Srinivas wrote:
> The virtio spec requires byte 0 of the virtio-scsi LUN structure
> to be '1'.
>
> Signed-off-by: Venkatesh Srinivas <[email protected]>
> ---
> drivers/vhost/scsi.c | 6 ++++++
> 1 file changed, 6 insertions(+)
>
> diff --git a/drivers/vhost/scsi.c b/drivers/vhost/scsi.c
> index 0a025b8..e48d4a6 100644
> --- a/drivers/vhost/scsi.c
> +++ b/drivers/vhost/scsi.c
> @@ -1001,6 +1001,12 @@ vhost_scsi_handle_vq(struct vhost_scsi *vs, struct vhost_virtqueue *vq)
> break;
> }
>
> + /* virtio-scsi spec requires byte 0 of the lun to be 1 */
> + if (unlikely(v_req.lun[0] != 1)) {
> + vhost_scsi_send_bad_target(vs, vq, head, out);
> + continue;
> + }
> +
> /* Extract the tpgt */
> target = v_req.lun[1];
> tpg = ACCESS_ONCE(vs_tpg[target]);

Applied to target-pending/master, and including in the next v3.14-rc
PULL request.

Thanks!

--nab