Skip to contentSkip to conversation

scsi: megaraid_sas: array overflow in megasas_dump_frame()

PATCH Applied Dan Carpenter 3 participants 4 messages Feb 14, 2017 – Feb 16, 2017

Subsystems (3)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 scsi: megaraid_sas: array overflow in megasas_dump_frame()

The "sz" variable is in terms of bytes, but we're treating the buffer as an array of __le32 so we have to divide by 4.

Fixes def0eab3af86 ("scsi: megaraid_sas: enhance debug logs in OCR context")
drivers/scsi/megaraid/megaraid_sas_base.c +1 -1
index dc9f42e135bb..7ac9a9ee9bd4 100644
@@ -2754,7 +2754,7 @@ megasas_dump_frame(void *mpi_request, int sz)
 	__le32 *mfp = (__le32 *)mpi_request;
 
 	printk(KERN_INFO "IO request frame:\n\t");
-	for (i = 0; i < sz; i++) {
+	for (i = 0; i < sz / sizeof(__le32); i++) {
 		if (i && ((i % 8) = 0))
 			printk("\n\t");
 		printk("%08x ", le32_to_cpu(mfp[i]));
maintainer Acked-by on v1 1/1
#1 lore raw
Quoted 8 lines

-----Original Message-----
From: Dan Carpenter [mailto:[email protected]]
Sent: Tuesday, February 14, 2017 10:09 PM
To: Kashyap Desai; Shivasharan S
Cc: Sumit Saxena; James E.J. Bottomley; Martin K. Petersen; [email protected]; [email protected]; kernel- [email protected]
Subject: [patch] scsi: megaraid_sas: array overflow in

megasas_dump_frame()

Quoted 2 lines

The "sz" variable is in terms of bytes, but we're treating the buffer as

an array of

Quoted 3 lines

__le32 so we have to divide by 4.

Fixes def0eab3af86 ("scsi: megaraid_sas: enhance debug logs in OCR

context")

Quoted 8 lines
drivers/scsi/megaraid/megaraid_sas_base.c +0 -0
index dc9f42e135bb..7ac9a9ee9bd4 100644

drivers/scsi/megaraid/megaraid_sas_base.c megasas_dump_frame(void *mpi_request, int sz) · line 2760

Quoted 8 lines
drivers/scsi/megaraid/megaraid_sas_base.c +1 -1
@@ -2754,7 +2754,7 @@ megasas_dump_frame(void *mpi_request, int sz)
 	__le32 *mfp = (__le32 *)mpi_request;
 
 	printk(KERN_INFO "IO request frame:\n\t");
-	for (i = 0; i < sz; i++) {
+	for (i = 0; i < sz / sizeof(__le32); i++) {
 		if (i && ((i % 8) == 0))
 			printk("\n\t");
 		printk("%08x ", le32_to_cpu(mfp[i]));

Thanks for fixing this.

maintainer Acked-by on v1 1/1
#2 lore raw
In reply to Dan Carpenter
Quoted 8 lines

-----Original Message-----
From: Dan Carpenter [mailto:[email protected]]
Sent: Tuesday, February 14, 2017 10:09 PM
To: Kashyap Desai; Shivasharan S
Cc: Sumit Saxena; James E.J. Bottomley; Martin K. Petersen; [email protected]; [email protected]; kernel- [email protected]
Subject: [patch] scsi: megaraid_sas: array overflow in

megasas_dump_frame()

Quoted 2 lines

The "sz" variable is in terms of bytes, but we're treating the buffer as

an array of

Quoted 3 lines

__le32 so we have to divide by 4.

Fixes def0eab3af86 ("scsi: megaraid_sas: enhance debug logs in OCR

context")

Quoted 8 lines
drivers/scsi/megaraid/megaraid_sas_base.c +0 -0
index dc9f42e135bb..7ac9a9ee9bd4 100644

drivers/scsi/megaraid/megaraid_sas_base.c megasas_dump_frame(void *mpi_request, int sz) · line 2760

Quoted 8 lines
drivers/scsi/megaraid/megaraid_sas_base.c +1 -1
@@ -2754,7 +2754,7 @@ megasas_dump_frame(void *mpi_request, int sz)
 	__le32 *mfp = (__le32 *)mpi_request;
 
 	printk(KERN_INFO "IO request frame:\n\t");
-	for (i = 0; i < sz; i++) {
+	for (i = 0; i < sz / sizeof(__le32); i++) {
 		if (i && ((i % 8) == 0))
 			printk("\n\t");
 		printk("%08x ", le32_to_cpu(mfp[i]));

Patch looks good. In last reply, Acked-by tag was not in proper format. Fixing it now. Sorry for inconvenience.

#3 lore raw
In reply to Dan Carpenter
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line

"Dan" = Dan Carpenter <[email protected]> writes:

Dan> The "sz" variable is in terms of bytes, but we're treating the Dan> buffer as an array of __le32 so we have to divide by 4.

Dan> Fixes: def0eab3af86 ("scsi: megaraid_sas: enhance debug logs in OCR Dan> context") Signed-off-by: Dan Carpenter <[email protected]>

Applied to 4.11/scsi-queue.

Signature · 1 line
Martin K. Petersen	Oracle Linux Engineering