All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] scsi: Fixup fixed sense generation
@ 2015-07-31 13:05 Hannes Reinecke
  2015-07-31 14:05 ` Bart Van Assche
  2015-08-11  6:49 ` Sagi Grimberg
  0 siblings, 2 replies; 4+ messages in thread
From: Hannes Reinecke @ 2015-07-31 13:05 UTC (permalink / raw)
  To: James Bottomley
  Cc: Christoph Hellwig, linux-scsi, Hannes Reinecke, Hannes Reinecke

Fixed sense reserves only 32 bits for the 'information' field,
so we need to restrict the 'information' value to avoid sense
data corruption.
Also the sense key is only 4 bits.

Signed-off-by: Hannes Reinecke <hare@suse.com>
---
 drivers/scsi/scsi_error.c | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/drivers/scsi/scsi_error.c b/drivers/scsi/scsi_error.c
index 106884a..ba7ffc4 100644
--- a/drivers/scsi/scsi_error.c
+++ b/drivers/scsi/scsi_error.c
@@ -2510,13 +2510,13 @@ void scsi_build_sense_buffer(int desc, u8 *buf, u8 key, u8 asc, u8 ascq)
 {
 	if (desc) {
 		buf[0] = 0x72;	/* descriptor, current */
-		buf[1] = key;
+		buf[1] = key & 0x0f;
 		buf[2] = asc;
 		buf[3] = ascq;
 		buf[7] = 0;
 	} else {
 		buf[0] = 0x70;	/* fixed, current */
-		buf[2] = key;
+		buf[2] = key & 0x0f;
 		buf[7] = 0xa;
 		buf[12] = asc;
 		buf[13] = ascq;
@@ -2549,7 +2549,11 @@ void scsi_set_sense_information(u8 *buf, u64 info)
 		put_unaligned_be64(info, &ucp[4]);
 	} else if ((buf[0] & 0x7f) == 0x70) {
 		buf[0] |= 0x80;
-		put_unaligned_be64(info, &buf[3]);
+		/*
+		 * Fixed format sense reserves only 32 bits for the
+		 * 'information' field
+		 */
+		put_unaligned_be32((u32)info, &buf[3]);
 	}
 }
 EXPORT_SYMBOL(scsi_set_sense_information);
-- 
1.8.5.2


^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2015-08-13  7:31 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-07-31 13:05 [PATCH] scsi: Fixup fixed sense generation Hannes Reinecke
2015-07-31 14:05 ` Bart Van Assche
2015-08-11  6:49 ` Sagi Grimberg
2015-08-13  7:31   ` Hannes Reinecke

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.