Skip to contentSkip to conversation

pvSCSI: Fix some issues

PATCH New Jun Kamada 1 participant 1 message Dec 8, 2008 Xen hypervisor interface

lore
Share & tools
lore

Jun Kamada

author
#0 lore raw

PATCH 2/6 pvSCSI: Fix some issues

-----
Jun Kamada

# HG changeset patch
# User [email protected]
# Date 1228697626 -32400
# Node ID d69643eb46702bd6b5f6c5d85bf8699cc14fdd12 # Parent e87f99f8bdfd883817989683d1204bef42a4d8f6 [PVSCSI] Fix sense_len

drivers/xen/scsiback/scsiback.c +12 -3
diff -r e87f99f8bdfd -r d69643eb4670 drivers/xen/scsiback/scsiback.c
@@ -148,6 +148,7 @@ void scsiback_do_resp_with_sense(char *s
 	struct vscsibk_info *info = pending_req->info;
 	int notify;
 	int more_to_do = 1;
+	struct scsi_sense_hdr sshdr;
 	unsigned long flags;
 
 	DPRINTK("%s\n",__FUNCTION__);
@@ -161,9 +162,17 @@ void scsiback_do_resp_with_sense(char *s
 	ring_res->rqid   = pending_req->rqid;
 
 	if (sense_buffer != NULL) {
-		memcpy(ring_res->sense_buffer, sense_buffer,
-				VSCSIIF_SENSE_BUFFERSIZE);
-		ring_res->sense_len = VSCSIIF_SENSE_BUFFERSIZE;
+		if (scsi_normalize_sense(sense_buffer,
+			sizeof(sense_buffer), &sshdr)) {
+
+			int len = 8 + sense_buffer[7];
+
+			if (len > VSCSIIF_SENSE_BUFFERSIZE)
+				len = VSCSIIF_SENSE_BUFFERSIZE;
+
+			memcpy(ring_res->sense_buffer, sense_buffer, len);
+			ring_res->sense_len = len;
+		}
 	} else {
 		ring_res->sense_len = 0;
 	}

_______________________________________________
Xen-devel mailing list
[email protected]
http://lists.xensource.com/xen-devel