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
> 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]>
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