public inbox for linux-scsi@vger.kernel.org
 help / color / mirror / Atom feed
* qla2xxx UBSAN warning in 4.14-rc1
@ 2017-09-18 10:49 Meelis Roos
  2017-09-26 21:36 ` Madhani, Himanshu
  2018-01-24 21:13 ` Bart Van Assche
  0 siblings, 2 replies; 8+ messages in thread
From: Meelis Roos @ 2017-09-18 10:49 UTC (permalink / raw)
  To: qla2xxx-upstream; +Cc: linux-scsi

Hello, I decided to widen the coverage of my kernel testbed and put some 
FC cards into servers. This one is a PCI-X QLA2340 in HP Proliant DL 380 
G4 (first 64-bit generation of Proliants). I got a UBSAN warning from 
qla2xxx before probing for the firmware.

This is reproducible with or without firmware being available.

[    3.905570] qla2xxx [0000:00:00.0]-0005: : QLogic Fibre Channel HBA Driver: 10.00.00.01-k.
[    3.905977] qla2xxx 0000:06:02.0: PCI IRQ 78 -> rerouted to legacy IRQ 18
[    3.906172] qla2xxx [0000:06:02.0]-001d: : Found an ISP2312 irq 18 iobase 0xffffc90000139000.
[...]
[    4.180117] ================================================================================
[    4.180300] UBSAN: Undefined behaviour in drivers/scsi/qla2xxx/qla_isr.c:275:14
[    4.180464] shift exponent 32 is too large for 32-bit type 'int'
[    4.180576] CPU: 0 PID: 138 Comm: systemd-udevd Not tainted 4.14.0-rc1-00009-g0666f560b71b #27
[    4.180741] Hardware name: HP ProLiant DL380 G4, BIOS P51 07/19/2007
[    4.180849] Call Trace:
[    4.180961]  dump_stack+0x4e/0x6c
[    4.181072]  ubsan_epilogue+0xd/0x3b
[    4.181179]  __ubsan_handle_shift_out_of_bounds+0x112/0x14c
[    4.181290]  ? try_to_del_timer_sync+0x44/0x68
[    4.181440]  qla2x00_mbx_completion+0x1c5/0x25d [qla2xxx]
[    4.182683]  qla2300_intr_handler+0x1ea/0x3bb [qla2xxx]
[    4.182827]  qla2x00_mailbox_command+0x77b/0x139a [qla2xxx]
[    4.182935]  ? __const_udelay+0x3c/0x3e
[    4.183073]  qla2x00_mbx_reg_test+0x83/0x114 [qla2xxx]
[    4.183213]  ? qla2x00_read_nvram_data+0x5c/0xe1 [qla2xxx]
[    4.183349]  qla2x00_chip_diag+0x354/0x45f [qla2xxx]
[    4.183489]  ? qla25xx_read_optrom_data+0x401/0x401 [qla2xxx]
[    4.183628]  qla2x00_initialize_adapter+0x2c2/0xa4e [qla2xxx]
[    4.183767]  qla2x00_probe_one+0x1681/0x392e [qla2xxx]
[    4.183883]  ? kernfs_add_one+0x11c/0x1ca
[    4.183990]  pci_device_probe+0x10b/0x1f1
[    4.184102]  driver_probe_device+0x21f/0x3a4
[    4.184210]  __driver_attach+0xa9/0xe1
[    4.184317]  ? driver_probe_device+0x3a4/0x3a4
[    4.184424]  bus_for_each_dev+0x6e/0xb5
[    4.184530]  driver_attach+0x22/0x3c
[    4.184638]  bus_add_driver+0x1d1/0x2ae
[    4.184745]  driver_register+0x78/0x130
[    4.184851]  __pci_register_driver+0x75/0xa8
[    4.184953]  ? 0xffffffffa0227000
[    4.185099]  qla2x00_module_init+0x21b/0x267 [qla2xxx]
[    4.185211]  do_one_initcall+0x5a/0x1e2
[    4.185323]  ? kfree+0x164/0x27a
[    4.185435]  do_init_module+0x9d/0x285
[    4.185545]  load_module+0x20db/0x38e3
[    4.185654]  ? disable_ro_nx+0x8f/0x8f
[    4.185765]  ? kernel_read+0x60/0xe5
[    4.185875]  ? kernel_read_file_from_fd+0x44/0x6d
[    4.185988]  SYSC_finit_module+0xa8/0xbc
[    4.186104]  SyS_finit_module+0x9/0xb
[    4.186216]  do_syscall_64+0x77/0x271
[    4.186331]  entry_SYSCALL64_slow_path+0x25/0x25
[    4.186444] RIP: 0033:0x7f29e6783219
[    4.186552] RSP: 002b:00007ffc8cb7c858 EFLAGS: 00000246 ORIG_RAX: 0000000000000139
[    4.186723] RAX: ffffffffffffffda RBX: 0000561d18660bd0 RCX: 00007f29e6783219
[    4.186837] RDX: 0000000000000000 RSI: 00007f29e64992d5 RDI: 0000000000000007
[    4.186944] RBP: 00007f29e64992d5 R08: 0000000000000000 R09: 00007ffc8cb7cdd0
[    4.187055] R10: 0000000000000007 R11: 0000000000000246 R12: 0000000000000000
[    4.187170] R13: 0000561d18666140 R14: 0000000000020000 R15: 00007ffc8cb7c970
[    4.187284] ================================================================================
[...]
[    4.489060] scsi host4: qla2xxx
[    4.489875] qla2xxx [0000:06:02.0]-00fb:4: QLogic QLA2340 - .
[    4.489976] qla2xxx [0000:06:02.0]-00fc:4: ISP2312: PCI-X (100 MHz) @ 0000:06:02.0 hdma+ host#=4 fw=3.03.28 IPX.



-- 
Meelis Roos (mroos@linux.ee)

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

* Re: qla2xxx UBSAN warning in 4.14-rc1
  2017-09-18 10:49 qla2xxx UBSAN warning in 4.14-rc1 Meelis Roos
@ 2017-09-26 21:36 ` Madhani, Himanshu
  2017-11-09  8:59   ` Meelis Roos
  2018-01-24 21:13 ` Bart Van Assche
  1 sibling, 1 reply; 8+ messages in thread
From: Madhani, Himanshu @ 2017-09-26 21:36 UTC (permalink / raw)
  To: Meelis Roos; +Cc: Dept-Eng QLA2xxx Upstream, linux-scsi@vger.kernel.org


> On Sep 18, 2017, at 3:49 AM, Meelis Roos <mroos@linux.ee> wrote:
> 
> Hello, I decided to widen the coverage of my kernel testbed and put some 
> FC cards into servers. This one is a PCI-X QLA2340 in HP Proliant DL 380 
> G4 (first 64-bit generation of Proliants). I got a UBSAN warning from 
> qla2xxx before probing for the firmware.
> 
> This is reproducible with or without firmware being available.
> 
> [    3.905570] qla2xxx [0000:00:00.0]-0005: : QLogic Fibre Channel HBA Driver: 10.00.00.01-k.
> [    3.905977] qla2xxx 0000:06:02.0: PCI IRQ 78 -> rerouted to legacy IRQ 18
> [    3.906172] qla2xxx [0000:06:02.0]-001d: : Found an ISP2312 irq 18 iobase 0xffffc90000139000.
> [...]
> [    4.180117] ================================================================================
> [    4.180300] UBSAN: Undefined behaviour in drivers/scsi/qla2xxx/qla_isr.c:275:14
> [    4.180464] shift exponent 32 is too large for 32-bit type 'int'
> [    4.180576] CPU: 0 PID: 138 Comm: systemd-udevd Not tainted 4.14.0-rc1-00009-g0666f560b71b #27
> [    4.180741] Hardware name: HP ProLiant DL380 G4, BIOS P51 07/19/2007
> [    4.180849] Call Trace:
> [    4.180961]  dump_stack+0x4e/0x6c
> [    4.181072]  ubsan_epilogue+0xd/0x3b
> [    4.181179]  __ubsan_handle_shift_out_of_bounds+0x112/0x14c
> [    4.181290]  ? try_to_del_timer_sync+0x44/0x68
> [    4.181440]  qla2x00_mbx_completion+0x1c5/0x25d [qla2xxx]
> [    4.182683]  qla2300_intr_handler+0x1ea/0x3bb [qla2xxx]
> [    4.182827]  qla2x00_mailbox_command+0x77b/0x139a [qla2xxx]
> [    4.182935]  ? __const_udelay+0x3c/0x3e
> [    4.183073]  qla2x00_mbx_reg_test+0x83/0x114 [qla2xxx]
> [    4.183213]  ? qla2x00_read_nvram_data+0x5c/0xe1 [qla2xxx]
> [    4.183349]  qla2x00_chip_diag+0x354/0x45f [qla2xxx]
> [    4.183489]  ? qla25xx_read_optrom_data+0x401/0x401 [qla2xxx]
> [    4.183628]  qla2x00_initialize_adapter+0x2c2/0xa4e [qla2xxx]
> [    4.183767]  qla2x00_probe_one+0x1681/0x392e [qla2xxx]
> [    4.183883]  ? kernfs_add_one+0x11c/0x1ca
> [    4.183990]  pci_device_probe+0x10b/0x1f1
> [    4.184102]  driver_probe_device+0x21f/0x3a4
> [    4.184210]  __driver_attach+0xa9/0xe1
> [    4.184317]  ? driver_probe_device+0x3a4/0x3a4
> [    4.184424]  bus_for_each_dev+0x6e/0xb5
> [    4.184530]  driver_attach+0x22/0x3c
> [    4.184638]  bus_add_driver+0x1d1/0x2ae
> [    4.184745]  driver_register+0x78/0x130
> [    4.184851]  __pci_register_driver+0x75/0xa8
> [    4.184953]  ? 0xffffffffa0227000
> [    4.185099]  qla2x00_module_init+0x21b/0x267 [qla2xxx]
> [    4.185211]  do_one_initcall+0x5a/0x1e2
> [    4.185323]  ? kfree+0x164/0x27a
> [    4.185435]  do_init_module+0x9d/0x285
> [    4.185545]  load_module+0x20db/0x38e3
> [    4.185654]  ? disable_ro_nx+0x8f/0x8f
> [    4.185765]  ? kernel_read+0x60/0xe5
> [    4.185875]  ? kernel_read_file_from_fd+0x44/0x6d
> [    4.185988]  SYSC_finit_module+0xa8/0xbc
> [    4.186104]  SyS_finit_module+0x9/0xb
> [    4.186216]  do_syscall_64+0x77/0x271
> [    4.186331]  entry_SYSCALL64_slow_path+0x25/0x25
> [    4.186444] RIP: 0033:0x7f29e6783219
> [    4.186552] RSP: 002b:00007ffc8cb7c858 EFLAGS: 00000246 ORIG_RAX: 0000000000000139
> [    4.186723] RAX: ffffffffffffffda RBX: 0000561d18660bd0 RCX: 00007f29e6783219
> [    4.186837] RDX: 0000000000000000 RSI: 00007f29e64992d5 RDI: 0000000000000007
> [    4.186944] RBP: 00007f29e64992d5 R08: 0000000000000000 R09: 00007ffc8cb7cdd0
> [    4.187055] R10: 0000000000000007 R11: 0000000000000246 R12: 0000000000000000
> [    4.187170] R13: 0000561d18666140 R14: 0000000000020000 R15: 00007ffc8cb7c970
> [    4.187284] ================================================================================
> [...]
> [    4.489060] scsi host4: qla2xxx
> [    4.489875] qla2xxx [0000:06:02.0]-00fb:4: QLogic QLA2340 - .
> [    4.489976] qla2xxx [0000:06:02.0]-00fc:4: ISP2312: PCI-X (100 MHz) @ 0000:06:02.0 hdma+ host#=4 fw=3.03.28 IPX.
> 
> 
> 
> -- 
> Meelis Roos (mroos@linux.ee)

we’ll take a look at this

Thanks,
- Himanshu


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

* Re: qla2xxx UBSAN warning in 4.14-rc1
  2017-09-26 21:36 ` Madhani, Himanshu
@ 2017-11-09  8:59   ` Meelis Roos
  2017-11-10  4:49     ` Himanshu Madhani
  2018-01-24 20:35     ` Meelis Roos
  0 siblings, 2 replies; 8+ messages in thread
From: Meelis Roos @ 2017-11-09  8:59 UTC (permalink / raw)
  To: Madhani, Himanshu; +Cc: Dept-Eng QLA2xxx Upstream, linux-scsi@vger.kernel.org

Hello again.

> > On Sep 18, 2017, at 3:49 AM, Meelis Roos <mroos@linux.ee> wrote:
> > 
> > Hello, I decided to widen the coverage of my kernel testbed and put some 
> > FC cards into servers. This one is a PCI-X QLA2340 in HP Proliant DL 380 
> > G4 (first 64-bit generation of Proliants). I got a UBSAN warning from 
> > qla2xxx before probing for the firmware.
> > 
> > This is reproducible with or without firmware being available.
> > 
> > [    3.905570] qla2xxx [0000:00:00.0]-0005: : QLogic Fibre Channel HBA Driver: 10.00.00.01-k.
> > [    3.905977] qla2xxx 0000:06:02.0: PCI IRQ 78 -> rerouted to legacy IRQ 18
> > [    3.906172] qla2xxx [0000:06:02.0]-001d: : Found an ISP2312 irq 18 iobase 0xffffc90000139000.
> > [...]
> > [    4.180117] ================================================================================
> > [    4.180300] UBSAN: Undefined behaviour in drivers/scsi/qla2xxx/qla_isr.c:275:14
> > [    4.180464] shift exponent 32 is too large for 32-bit type 'int'
> > [    4.180576] CPU: 0 PID: 138 Comm: systemd-udevd Not tainted 4.14.0-rc1-00009-g0666f560b71b #27
> > [    4.180741] Hardware name: HP ProLiant DL380 G4, BIOS P51 07/19/2007
> > [    4.180849] Call Trace:
> > [    4.180961]  dump_stack+0x4e/0x6c
> > [    4.181072]  ubsan_epilogue+0xd/0x3b
> > [    4.181179]  __ubsan_handle_shift_out_of_bounds+0x112/0x14c
> > [    4.181290]  ? try_to_del_timer_sync+0x44/0x68
> > [    4.181440]  qla2x00_mbx_completion+0x1c5/0x25d [qla2xxx]
> > [    4.182683]  qla2300_intr_handler+0x1ea/0x3bb [qla2xxx]
> > [    4.182827]  qla2x00_mailbox_command+0x77b/0x139a [qla2xxx]

[...]

> we’ll take a look at this

How is it going? 4.14 is almost here but it is still unfixed?


-- 
Meelis Roos (mroos@linux.ee)

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

* Re: qla2xxx UBSAN warning in 4.14-rc1
  2017-11-09  8:59   ` Meelis Roos
@ 2017-11-10  4:49     ` Himanshu Madhani
  2018-01-24 20:35     ` Meelis Roos
  1 sibling, 0 replies; 8+ messages in thread
From: Himanshu Madhani @ 2017-11-10  4:49 UTC (permalink / raw)
  To: Meelis Roos; +Cc: Dept-Eng QLA2xxx Upstream, linux-scsi@vger.kernel.org

[-- Attachment #1: Type: text/plain, Size: 1939 bytes --]

Hi Meelis,

On Thu, 9 Nov 2017, 12:59am, Meelis Roos wrote:

> Hello again.
> 
> > > On Sep 18, 2017, at 3:49 AM, Meelis Roos <mroos@linux.ee> wrote:
> > > 
> > > Hello, I decided to widen the coverage of my kernel testbed and put some 
> > > FC cards into servers. This one is a PCI-X QLA2340 in HP Proliant DL 380 
> > > G4 (first 64-bit generation of Proliants). I got a UBSAN warning from 
> > > qla2xxx before probing for the firmware.
> > > 
> > > This is reproducible with or without firmware being available.
> > > 
> > > [    3.905570] qla2xxx [0000:00:00.0]-0005: : QLogic Fibre Channel HBA Driver: 10.00.00.01-k.
> > > [    3.905977] qla2xxx 0000:06:02.0: PCI IRQ 78 -> rerouted to legacy IRQ 18
> > > [    3.906172] qla2xxx [0000:06:02.0]-001d: : Found an ISP2312 irq 18 iobase 0xffffc90000139000.
> > > [...]
> > > [    4.180117] ================================================================================
> > > [    4.180300] UBSAN: Undefined behaviour in drivers/scsi/qla2xxx/qla_isr.c:275:14
> > > [    4.180464] shift exponent 32 is too large for 32-bit type 'int'
> > > [    4.180576] CPU: 0 PID: 138 Comm: systemd-udevd Not tainted 4.14.0-rc1-00009-g0666f560b71b #27
> > > [    4.180741] Hardware name: HP ProLiant DL380 G4, BIOS P51 07/19/2007
> > > [    4.180849] Call Trace:
> > > [    4.180961]  dump_stack+0x4e/0x6c
> > > [    4.181072]  ubsan_epilogue+0xd/0x3b
> > > [    4.181179]  __ubsan_handle_shift_out_of_bounds+0x112/0x14c
> > > [    4.181290]  ? try_to_del_timer_sync+0x44/0x68
> > > [    4.181440]  qla2x00_mbx_completion+0x1c5/0x25d [qla2xxx]
> > > [    4.182683]  qla2300_intr_handler+0x1ea/0x3bb [qla2xxx]
> > > [    4.182827]  qla2x00_mailbox_command+0x77b/0x139a [qla2xxx]
> 
> [...]
> 
> > we’ll take a look at this
> 
> How is it going? 4.14 is almost here but it is still unfixed?
> 
> 
> 

We are still working on fixing this error. I'll post patch as soon
as its ready. 

Thanks,
Himanshu

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

* Re: qla2xxx UBSAN warning in 4.14-rc1
  2017-11-09  8:59   ` Meelis Roos
  2017-11-10  4:49     ` Himanshu Madhani
@ 2018-01-24 20:35     ` Meelis Roos
  1 sibling, 0 replies; 8+ messages in thread
From: Meelis Roos @ 2018-01-24 20:35 UTC (permalink / raw)
  To: Madhani, Himanshu; +Cc: Dept-Eng QLA2xxx Upstream, linux-scsi@vger.kernel.org

> Hello again.

And again...
> 
> > > On Sep 18, 2017, at 3:49 AM, Meelis Roos <mroos@linux.ee> wrote:
> > > 
> > > Hello, I decided to widen the coverage of my kernel testbed and put some 
> > > FC cards into servers. This one is a PCI-X QLA2340 in HP Proliant DL 380 
> > > G4 (first 64-bit generation of Proliants). I got a UBSAN warning from 
> > > qla2xxx before probing for the firmware.
> > > 
> > > This is reproducible with or without firmware being available.
> > > 
> > > [    3.905570] qla2xxx [0000:00:00.0]-0005: : QLogic Fibre Channel HBA Driver: 10.00.00.01-k.
> > > [    3.905977] qla2xxx 0000:06:02.0: PCI IRQ 78 -> rerouted to legacy IRQ 18
> > > [    3.906172] qla2xxx [0000:06:02.0]-001d: : Found an ISP2312 irq 18 iobase 0xffffc90000139000.
> > > [...]
> > > [    4.180117] ================================================================================
> > > [    4.180300] UBSAN: Undefined behaviour in drivers/scsi/qla2xxx/qla_isr.c:275:14
> > > [    4.180464] shift exponent 32 is too large for 32-bit type 'int'
> > > [    4.180576] CPU: 0 PID: 138 Comm: systemd-udevd Not tainted 4.14.0-rc1-00009-g0666f560b71b #27
> > > [    4.180741] Hardware name: HP ProLiant DL380 G4, BIOS P51 07/19/2007
> > > [    4.180849] Call Trace:
> > > [    4.180961]  dump_stack+0x4e/0x6c
> > > [    4.181072]  ubsan_epilogue+0xd/0x3b
> > > [    4.181179]  __ubsan_handle_shift_out_of_bounds+0x112/0x14c
> > > [    4.181290]  ? try_to_del_timer_sync+0x44/0x68
> > > [    4.181440]  qla2x00_mbx_completion+0x1c5/0x25d [qla2xxx]
> > > [    4.182683]  qla2300_intr_handler+0x1ea/0x3bb [qla2xxx]
> > > [    4.182827]  qla2x00_mailbox_command+0x77b/0x139a [qla2xxx]
> 
> [...]
> 
> > we’ll take a look at this
> 
> How is it going? 4.14 is almost here but it is still unfixed?

4.15 is almost here but nothing seems to have chanmged?

-- 
Meelis Roos (mroos@linux.ee)

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

* Re: qla2xxx UBSAN warning in 4.14-rc1
  2017-09-18 10:49 qla2xxx UBSAN warning in 4.14-rc1 Meelis Roos
  2017-09-26 21:36 ` Madhani, Himanshu
@ 2018-01-24 21:13 ` Bart Van Assche
  2018-01-24 22:18   ` Meelis Roos
  1 sibling, 1 reply; 8+ messages in thread
From: Bart Van Assche @ 2018-01-24 21:13 UTC (permalink / raw)
  To: mroos@linux.ee, qla2xxx-upstream@qlogic.com
  Cc: linux-scsi@vger.kernel.org, himanshu.madhani@cavium.com

On Mon, 2017-09-18 at 13:49 +0300, Meelis Roos wrote:
> Hello, I decided to widen the coverage of my kernel testbed and put some 
> FC cards into servers. This one is a PCI-X QLA2340 in HP Proliant DL 380 
> G4 (first 64-bit generation of Proliants). I got a UBSAN warning from 
> qla2xxx before probing for the firmware.

Would it be possible for you to test the (completely untested) patch below?

diff --git a/drivers/scsi/qla2xxx/qla_isr.c b/drivers/scsi/qla2xxx/qla_isr.c
index 16c43bd9bb83..4cdda66a9f32 100644
--- a/drivers/scsi/qla2xxx/qla_isr.c
+++ b/drivers/scsi/qla2xxx/qla_isr.c
@@ -272,7 +272,7 @@ qla2x00_mbx_completion(scsi_qla_host_t *vha, uint16_t mb0)
 	struct device_reg_2xxx __iomem *reg = &ha->iobase->isp;
 
 	/* Read all mbox registers? */
-	mboxes = (1 << ha->mbx_count) - 1;
+	mboxes = (ha->mbx_count != 32 ? 1U << ha->mbx_count : 0) - 1U;
 	if (!ha->mcp)
 		ql_dbg(ql_dbg_async, vha, 0x5001, "MBX pointer ERROR.\n");
 	else

Thanks,

Bart.

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

* Re: qla2xxx UBSAN warning in 4.14-rc1
  2018-01-24 21:13 ` Bart Van Assche
@ 2018-01-24 22:18   ` Meelis Roos
  2018-01-25  7:25     ` Madhani, Himanshu
  0 siblings, 1 reply; 8+ messages in thread
From: Meelis Roos @ 2018-01-24 22:18 UTC (permalink / raw)
  To: Bart Van Assche
  Cc: qla2xxx-upstream@qlogic.com, linux-scsi@vger.kernel.org,
	himanshu.madhani@cavium.com

> > Hello, I decided to widen the coverage of my kernel testbed and put some 
> > FC cards into servers. This one is a PCI-X QLA2340 in HP Proliant DL 380 
> > G4 (first 64-bit generation of Proliants). I got a UBSAN warning from 
> > qla2xxx before probing for the firmware.
> 
> Would it be possible for you to test the (completely untested) patch below?

It compiles without warnings and the driver loads without warnings.

Meanwhile I tried the following patch, also successfully.

However, the same problem is present in qla24xx_mbx_completion (and can 
also be trivially patched over).

I did not understand the logic of what's goind on with mailboxes - there 
seem to be up to 32 of them and for some reason, a bitmask is used for 
iterating over them, with mboxes = ha->mcp->in_mb filtering out some 
mailboxes, and in_mb bitmap value comes from firmware?

diff --git a/drivers/scsi/qla2xxx/qla_isr.c b/drivers/scsi/qla2xxx/qla_isr.c
index 2fd79129bb2a..7868930ae1c8 100644
--- a/drivers/scsi/qla2xxx/qla_isr.c
+++ b/drivers/scsi/qla2xxx/qla_isr.c
@@ -272,7 +272,7 @@ qla2x00_mbx_completion(scsi_qla_host_t *vha, uint16_t mb0)
 	struct device_reg_2xxx __iomem *reg = &ha->iobase->isp;
 
 	/* Read all mbox registers? */
-	mboxes = (1 << ha->mbx_count) - 1;
+	mboxes = (1ULL << ha->mbx_count) - 1;
 	if (!ha->mcp)
 		ql_dbg(ql_dbg_async, vha, 0x5001, "MBX pointer ERROR.\n");
 	else

-- 
Meelis Roos (mroos@linux.ee)

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

* Re: qla2xxx UBSAN warning in 4.14-rc1
  2018-01-24 22:18   ` Meelis Roos
@ 2018-01-25  7:25     ` Madhani, Himanshu
  0 siblings, 0 replies; 8+ messages in thread
From: Madhani, Himanshu @ 2018-01-25  7:25 UTC (permalink / raw)
  To: Meelis Roos
  Cc: Bart Van Assche, Dept-Eng QLA2xxx Upstream,
	linux-scsi@vger.kernel.org

Hi Meelis, 

> On Jan 24, 2018, at 2:18 PM, Meelis Roos <mroos@linux.ee> wrote:
> 
>>> Hello, I decided to widen the coverage of my kernel testbed and put some 
>>> FC cards into servers. This one is a PCI-X QLA2340 in HP Proliant DL 380 
>>> G4 (first 64-bit generation of Proliants). I got a UBSAN warning from 
>>> qla2xxx before probing for the firmware.
>> 
>> Would it be possible for you to test the (completely untested) patch below?
> 
> It compiles without warnings and the driver loads without warnings.
> 
> Meanwhile I tried the following patch, also successfully.
> 
> However, the same problem is present in qla24xx_mbx_completion (and can 
> also be trivially patched over).
> 
> I did not understand the logic of what's goind on with mailboxes - there 
> seem to be up to 32 of them and for some reason, a bitmask is used for 
> iterating over them, with mboxes = ha->mcp->in_mb filtering out some 
> mailboxes, and in_mb bitmap value comes from firmware?
> 

> diff --git a/drivers/scsi/qla2xxx/qla_isr.c b/drivers/scsi/qla2xxx/qla_isr.c
> index 2fd79129bb2a..7868930ae1c8 100644
> --- a/drivers/scsi/qla2xxx/qla_isr.c
> +++ b/drivers/scsi/qla2xxx/qla_isr.c
> @@ -272,7 +272,7 @@ qla2x00_mbx_completion(scsi_qla_host_t *vha, uint16_t mb0)
> 	struct device_reg_2xxx __iomem *reg = &ha->iobase->isp;
> 
> 	/* Read all mbox registers? */
> -	mboxes = (1 << ha->mbx_count) - 1;
> +	mboxes = (1ULL << ha->mbx_count) - 1;
> 	if (!ha->mcp)
> 		ql_dbg(ql_dbg_async, vha, 0x5001, "MBX pointer ERROR.\n");
> 	else
> 
> -- 
> Meelis Roos (mroos@linux.ee)

Since I did could not get hold of 4G adapter for testing, i was not able to
get to this one fixed in time. 

Bart’s change looks good and with your testing should be good to include.

I also noticed qla24xx_mbx_completion() will need this fix. I was able to confirm it on my setup with 16/32G adapter. 

diff --git a/drivers/scsi/qla2xxx/qla_isr.c b/drivers/scsi/qla2xxx/qla_isr.c
index d1e7fd905f16..b97b14a89ac3 100644
--- a/drivers/scsi/qla2xxx/qla_isr.c
+++ b/drivers/scsi/qla2xxx/qla_isr.c
@@ -272,7 +272,7 @@ qla2x00_mbx_completion(scsi_qla_host_t *vha, uint16_t mb0)
        struct device_reg_2xxx __iomem *reg = &ha->iobase->isp;

        /* Read all mbox registers? */
-       mboxes = (1 << ha->mbx_count) - 1;
+       mboxes = (ha->mbx_count != 32 ? 1U << ha->mbx_count : 0) - 1U;
        if (!ha->mcp)
                ql_dbg(ql_dbg_async, vha, 0x5001, "MBX pointer ERROR.\n");
        else
@@ -2881,7 +2881,7 @@ qla24xx_mbx_completion(scsi_qla_host_t *vha, uint16_t mb0)
        struct device_reg_24xx __iomem *reg = &ha->iobase->isp24;

        /* Read all mbox registers? */
-       mboxes = (1 << ha->mbx_count) - 1;
+       mboxes = (ha->mbx_count != 32 ? 1U << ha->mbx_count : 0) - 1U;
        if (!ha->mcp)
                ql_dbg(ql_dbg_async, vha, 0x504e, "MBX pointer ERROR.\n”);

Would you care to send formal patch and add my ACK to it?

Thanks for all the effort on getting this tested on your setup. 

Thanks,
- Himanshu


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

end of thread, other threads:[~2018-01-25  7:25 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-09-18 10:49 qla2xxx UBSAN warning in 4.14-rc1 Meelis Roos
2017-09-26 21:36 ` Madhani, Himanshu
2017-11-09  8:59   ` Meelis Roos
2017-11-10  4:49     ` Himanshu Madhani
2018-01-24 20:35     ` Meelis Roos
2018-01-24 21:13 ` Bart Van Assche
2018-01-24 22:18   ` Meelis Roos
2018-01-25  7:25     ` Madhani, Himanshu

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox