Re: [PATCH 07/15] qla2xxx: Fix crash during driver load on big endian machines

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




> On Dec 1, 2020, at 2:27 AM, Nilesh Javali <njavali@xxxxxxxxxxx> wrote:
> 
> From: Arun Easi <aeasi@xxxxxxxxxxx>
> 
> Crash stack:
> 	[576544.715489] Unable to handle kernel paging request for data at address 0xd00000000f970000
> 	[576544.715497] Faulting instruction address: 0xd00000000f880f64
> 	[576544.715503] Oops: Kernel access of bad area, sig: 11 [#1]
> 	[576544.715506] SMP NR_CPUS=2048 NUMA pSeries
> 	:
> 	[576544.715703] NIP [d00000000f880f64] .qla27xx_fwdt_template_valid+0x94/0x100 [qla2xxx]
> 	[576544.715722] LR [d00000000f7952dc] .qla24xx_load_risc_flash+0x2fc/0x590 [qla2xxx]
> 	[576544.715726] Call Trace:
> 	[576544.715731] [c0000004d0ffb000] [c0000006fe02c350] 0xc0000006fe02c350 (unreliable)
> 	[576544.715750] [c0000004d0ffb080] [d00000000f7952dc] .qla24xx_load_risc_flash+0x2fc/0x590 [qla2xxx]
> 	[576544.715770] [c0000004d0ffb170] [d00000000f7aa034] .qla81xx_load_risc+0x84/0x1a0 [qla2xxx]
> 	[576544.715789] [c0000004d0ffb210] [d00000000f79f7c8] .qla2x00_setup_chip+0xc8/0x910 [qla2xxx]
> 	[576544.715808] [c0000004d0ffb300] [d00000000f7a631c] .qla2x00_initialize_adapter+0x4dc/0xb00 [qla2xxx]
> 	[576544.715826] [c0000004d0ffb3e0] [d00000000f78ce28] .qla2x00_probe_one+0xf08/0x2200 [qla2xxx]
> 
> Fixes: f73cb695d3ec ("[SCSI] qla2xxx: Add support for ISP2071.")
> Signed-off-by: Arun Easi <aeasi@xxxxxxxxxxx>
> Signed-off-by: Nilesh Javali <njavali@xxxxxxxxxxx>

I think this needs stable tag as well. 

> ---
> drivers/scsi/qla2xxx/qla_tmpl.c | 9 +++++----
> drivers/scsi/qla2xxx/qla_tmpl.h | 2 +-
> 2 files changed, 6 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/scsi/qla2xxx/qla_tmpl.c b/drivers/scsi/qla2xxx/qla_tmpl.c
> index 84f4416d366f..a6bb1c0e2245 100644
> --- a/drivers/scsi/qla2xxx/qla_tmpl.c
> +++ b/drivers/scsi/qla2xxx/qla_tmpl.c
> @@ -928,7 +928,8 @@ qla27xx_template_checksum(void *p, ulong size)
> static inline int
> qla27xx_verify_template_checksum(struct qla27xx_fwdt_template *tmp)
> {
> -	return qla27xx_template_checksum(tmp, tmp->template_size) == 0;
> +	return qla27xx_template_checksum(tmp,
> +		le32_to_cpu(tmp->template_size)) == 0;
> }
> 
> static inline int
> @@ -944,7 +945,7 @@ qla27xx_execute_fwdt_template(struct scsi_qla_host *vha,
> 	ulong len = 0;
> 
> 	if (qla27xx_fwdt_template_valid(tmp)) {
> -		len = tmp->template_size;
> +		len = le32_to_cpu(tmp->template_size);
> 		tmp = memcpy(buf, tmp, len);
> 		ql27xx_edit_template(vha, tmp);
> 		qla27xx_walk_template(vha, tmp, buf, &len);
> @@ -960,7 +961,7 @@ qla27xx_fwdt_calculate_dump_size(struct scsi_qla_host *vha, void *p)
> 	ulong len = 0;
> 
> 	if (qla27xx_fwdt_template_valid(tmp)) {
> -		len = tmp->template_size;
> +		len = le32_to_cpu(tmp->template_size);
> 		qla27xx_walk_template(vha, tmp, NULL, &len);
> 	}
> 
> @@ -972,7 +973,7 @@ qla27xx_fwdt_template_size(void *p)
> {
> 	struct qla27xx_fwdt_template *tmp = p;
> 
> -	return tmp->template_size;
> +	return le32_to_cpu(tmp->template_size);
> }
> 
> int
> diff --git a/drivers/scsi/qla2xxx/qla_tmpl.h b/drivers/scsi/qla2xxx/qla_tmpl.h
> index c47184db5081..6e0987edfceb 100644
> --- a/drivers/scsi/qla2xxx/qla_tmpl.h
> +++ b/drivers/scsi/qla2xxx/qla_tmpl.h
> @@ -12,7 +12,7 @@
> struct __packed qla27xx_fwdt_template {
> 	__le32 template_type;
> 	__le32 entry_offset;
> -	uint32_t template_size;
> +	__le32 template_size;
> 	uint32_t count;		/* borrow field for running/residual count */
> 
> 	__le32 entry_count;
> -- 
> 2.19.0.rc0
> 

Otherwise.. Looks good

Reviewed-by: Himanshu Madhani <himanshu.madhani@xxxxxxxxxx>

--
Himanshu Madhani	 Oracle Linux Engineering





[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Samba]     [Device Mapper]

  Powered by Linux