On 05.08.2017 00:12, Helge Deller wrote: > On the parisc platform I noticed the UBSAN warning below. > Maybe nr_divisor isn't correctly initialized ? > > [ 18.625415] ================================================================================ > [ 18.726489] UBSAN: Undefined behaviour in ./drivers/scsi/sym53c8xx_2/sym_hipd.c:762:24 > [ 18.864911] index -1903078336 is out of range for type 'u32 [7]' > [ 18.936779] CPU: 0 PID: 1 Comm: swapper Not tainted 4.13.0-rc3-32bit+ #427 > [ 19.019138] Backtrace: > [ 19.047353] [<10191eb4>] show_stack+0x3c/0x50 > [ 19.100577] [<10ce82fc>] dump_stack+0x28/0x38 > [ 19.153826] [<10771b3c>] ubsan_epilogue+0x1c/0x60 > [ 19.211229] [<107722ec>] __ubsan_handle_out_of_bounds+0x68/0x80 > [ 19.283194] [<10924074>] sym_hcb_attach+0xc2c/0x3204 > [ 19.343724] [<107aaa38>] sba_dma_supported+0x4c/0x208 > [ 19.405291] [<10911984>] sym2_probe+0xd64/0x122c > [ 19.461661] [<10501c64>] kernfs_add_one+0x328/0x354 I did some more debugging. The offending line is: period = (11 * div_10M[np->clock_divn - 1]) / (4 * np->clock_khz); with those values np->clock_divn = 7 np->clock_khz = 160000 div_10M[6] = 80000000 period gets calculated as: period = 1375 which is correct. I have no clue why UBSAN reports an error here. There is no overflow in index for div_10M array, neither is there a u32 overflow. Ideas? Helge