On 27/04/18 20:42, Sinan Kaya wrote: > On 4/27/2018 11:54 AM, Robin Murphy wrote: >> >>> ubuntu at ubuntu:~/amdgpu$_./vectoradd_hip.exe >>> [ 834.002206] create_process:620 >>> [ 837.413021] Unable to handle kernel NULL pointer dereference at virtual address 00000018 >> >> £5 says that's sg_dma_len(NULL), which implies either that something's gone horribly wrong with the scatterlist DMA mapping such that the lengths don't match, or much more likely that ttm.dma_address is NULL and I've missed the tiny subtlety below. Does that fix matters? > > Turned out to be a null pointer problem after sg_next(). The following helped. Ugh, right, the whole thing's in the wrong place such that when addrs is valid we can dereference junk on the way out of the loop (entirely needlessly)... v3 coming up. Robin. > > + if (addrs && (dma_len == 0)) { > dma_sg = sg_next(dma_sg); > - dma_len = sg_dma_len(dma_sg); > - addr = sg_dma_address(dma_sg); > + if (dma_sg) { > + dma_len = sg_dma_len(dma_sg); > + addr = sg_dma_address(dma_sg); > + } > } > >